Получение элементов программным способом с использованием JavaScript на основе местоположения в UIWebView и щелчок по ним - PullRequest
1 голос
/ 10 ноября 2011

Я пытаюсь получить интерактивные элементы из UIWebView на основе координат («Что такое координата x, y?»), Получить информацию о них («Это ссылка? Куда она идет?») И затем программно нажмите на них, и я столкнулся с парой проблем.

elementFromPoint (x, y) прекрасно работает с точки зрения получения элементов в заданном месте, но если у меня есть, например, <span> внутри <a>, то вместо <a> сообщается диапазон , Есть ли способ обойти это? Или перейти к родительскому элементу над этим элементом, но с такими же координатами, если он не активен?

Кроме того, click () отлично работает для кнопок, но не для ссылок. Как бы имитировать щелчок мышью (или касание) по ссылке или при наведении курсора мыши? Я попытался onmouseover () для элементов, но это не сработало.

В качестве альтернативы, есть ли какой-либо объект мыши на странице, который я мог бы программно перемещать и который делал бы то, что я хочу?

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

То, что я закончил для части «наведения мыши», это просто проверка, является ли данный элемент якорем или объектом формы, и если нет, я иду на parentNode и проверяю это, и я делаю это для 2 родителя, прежде чем сдаться. Кажется, этого достаточно для получения самих ссылок.

Для выбора элемента это даже проще, так как мне не нужно пересекать иерархию. Я просто создаю событие щелчка мыши и передаю его элементу, обнаруженному в elementFromPoint (), и страница автоматически пересылает это вверх по самой иерархии.

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"var theEvent = document.createEvent('MouseEvent');\n theEvent.initMouseEvent('click', true, true, window);\n awElement.dispatchEvent(theEvent);\n awElement.click();\n", mouseX, mouseY]];

Так просто! Просто хотелось бы сделать то же самое, чтобы получить ссылку на элемент.

0 голосов
/ 10 ноября 2011

Если мое понимание верно.

Попробуйте "document.location" и задайте строку значений, к которой вам нужно перейти.Будет вызвана функция

UIWebViewDelegate - shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { и URL-адрес запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...