Привет от "Рыжего Деда"!) Наша рок-команда продолжает расширяться и мы ищем Back-end разработчика с опытом от 2 лет. Мы работаем с очень интересными клиентами: Airbnb, Alcatel, BAT, Acer, Мвидео, Qiwi, Iconfood... - ...
Написать функционал на JavaScript
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
1 написать функцию поиска всех фреймов на странице FindAllFrames которая вернет массив documentElement всех фреймов на странице к которым можно получить доступ
2 написать функцию FindAll (selector, text, visible, dmid, documentRoot)
она пробежится по всем фреймам и найдет все элементы на них с помощью следующей функции
3 function FindAllElements (selector, text, visible, dmid, documentRoot)
selector это CSS3 селектор
text Это text содержащийся в outerHTML найденого selector
visible видимость элемента на странице. если он 1 то ищем только видимые элементы, если 0 то все видимость определяется не только по текущему элементу, но также и по все родительским
dmid если он указан, то сначала находим элемент [dmid]; и уже внутри него проводим поиск с учетом selector text и visible
documentRoot это documentElement нужного фрейма по умолчанию = document
возврат хеш массив
{dmid, x, y, width, height, inView}
dmid это специальный id который присвоен нужному элементу
x,y, это координаты элемента относительно левого верхнего угла браузера с учетом всех скролов
после нахождения элемента протестировать через document.elementFromPoint что в этих координатах нужный элемент если нет найти его (проблема возникает с ссылками которы расположены на нескольких строках)
width, height ширина и высота элемента
inView 1/0 этот элеменит находится в видимой части браузера или нет т.е. чтобы нажать на его мышкой мы должны что-то скролить или нет
возьмем пример html кода
FindAllElements ("*", "text", 1, "", document);
Эта функция найдет только 1 элемент - input visibleInput
Потому что у второго input родитель невидимый, его видимость определяется функцией типа вот такой:
function IsVisible (e)
{
if (!e)
return false;
var display = window.getComputedStyle(e, null).getPropertyValue("display");
var visible = window.getComputedStyle(e, null).getPropertyValue("visible");
if (display == "none" || visible == "hidden")
return false;
if (e.parentElement)
return DMIsVisible(e.parentElement);
return true;
}
div#d1 содержит в себе текст "text" но при поиске вхождения текста в outerHTML мы возвращаем только самый внутренний глубже всех вложенный элемент
пример
вернет весь div
FindAllElements ("*", "link1")
вернет a
FindAllElements ("*", "link")
вернет span
после того как найден элемент по selector, text и visible
Проверяется наличие у него атрибута dmid если нет то присваеваем и возвращаем его вот так
dmid = 'i' + Math.random().toString(36).substr(2, 9);
Тестировать можно на странцице http://t.tomska.com/jsbwebtest/
Координаты каждого элемента на странице должены корректно находится, с учетем всех вложенных фреймов
Особое внимание на инпут в блоке с зеленым фоном #iscroll.
Исключение только iframe к которому вы не сможете получить доступ
Заявки фрилансеров
Похожие заказы
- Веб-программирование7 заявокЗакрыт8 лет назад
предложить готовое решение или написать (или исправить имеющуюся) программу для рассылки в сообщений зарегистрированным подписчикам через Skype (или предложить другой мессенджер) оплата договорная.
Веб-программирование1 заявкаЗакрыт8 лет назад- $20
Добрый день ! Необходимо спарсить информацию с сайта. На сайте есть авторизация, а так же необходимая информация выводится кусками по 10 позиций. При нажатии кнопки показать еще 10 и так далее. На сколько я понимаю ...
Веб-программирование1 исполнительЗавершен8 лет назад - $120
Ищем программиста, который смог бы внедрить на сайт следующие работы: Технический аудит- 2000 рублей Оптимизация- 3500 рублей Коммерческий аудит- 2000 рублей Движок - CS Cart ...
Веб-программирование1 заявкаЗакрыт8 лет назад http://timeon.com.ua - на черной плашке выпадающее меню. 1. При наведении на выпадающеее окно первого пункта этот первый пункт должен подсвечиваться так же как и при наведении на него 2. ...
Веб-программирование3 заявкиЗакрыт8 лет назад- $10
Нужно установить и настроить скрипт сайта рулетки для CS-GO (скрипт есть). Ждем ваших предложений.
Веб-программирование2 заявкиЗакрыт8 лет назад 1. В форме запроса задаётся ключевая фраза, например "720P HD Night Vision Camera" 2. Парсер находит все страницы поиска на AliExpress.com по данной фразе и содержащие видеоролики (тэг ), включая эту страницу ...
Веб-программирование1 исполнительЗавершен8 лет назадТребуется интегрировать новую страницу и сделать механизм отправки формы. Умение работать с git.
Веб-программирование4 заявкиЗакрыт8 лет назадСайт готов на 70%, нужно его допилить Срок - 1 неделя Сайт: http://csib.notix-test.ru/ Список доработок: https://docs.google.com/document/d/1ub_plg2Efg_SzNntcGGk8lF5H3MYEoLnyDIS3lb3hQY/edit?usp=sharing (возможны дополнения). В общем нужно доделать сайт под ключ. Пишите цену и срок
Веб-программирование1 заявкаЗакрыт8 лет назадДобрый день. Требуется реализация сайта по типу 4cash точка ру. Большим преимуществом будет реализация похожих проектов в портфолио. К заявке прошу оставлять дополнительно скайп, ориентировочную стоимость и примерные сроки. ...
Веб-программирование2 заявкиЗакрыт8 лет назад