Javascript - программно нажмите привязку в iOS Safari - PullRequest
0 голосов
/ 29 января 2012

Я работаю с существующим веб-сайтом с некоторыми тегами привязок, такими как:

<ul>
    <li><a id="answer-1" href="/" rel="0">Answer 1</a></li>
    <li><a id="answer-2" href="/" rel="1">Answer 2</a></li>
    <li><a id="answer-3" href="/" rel="2">Answer 3</a></li>
    <li><a id="answer-4" href="/" rel="3">Answer 4</a></li>
</ul>

Мне нужно программно щелкнуть один из этих якорей в зависимости от выбора пользователя.

На рабочем столе, в IE это работает:

document.getElementById('answer-1').click();

Однако в iOS-сафари не все работает, это приводит к появлению всплывающего окна:

if (!document.getElementById('answer-1').click) alert ('Oh no!');

Насколько я могу судить, у них подключен какой-то другой javascript для отправки тега rel в качестве ответа. Есть ли другой способ программно нажать на якорь в iOS Safari? Или мне нужно копаться в их javascript, чтобы узнать, что вызывается при нажатии на якорь?

Я также пробовал это, но это не работает:

window.location.href = document.getElementById('answer-1').href;

Они должны где-то делать больше в Javascript (может быть, jquery).

Ответы [ 4 ]

1 голос
/ 30 января 2012

Я ответил на аналогичный вопрос, где нужно отправить событие клика вручную: Принудительно открывать ссылку в мобильном сафари из веб-приложения с помощью javascript

Вы можете применить эту логикув ваш код.

0 голосов
/ 19 августа 2012

Эта проблема также возникла с моим приложением Mac при тестировании под Snow Leopard или Lion. Странно это сработало с Mountain Lion.

Я решил проблему с помощью jQuery.

$('#answer-1').click();

Вы также можете попробовать, если сайт уже загружает jQuery!

0 голосов
/ 30 января 2012

Мне кажется, в мобильном сафари нет способа позвонить click().

Используя панель инструментов dev в Google Chrome, я смог выяснить функцию javascript, которая вызывается при нажатии на один из этих якорей.

Мне удалось просто вызвать функцию, чтобы получить то, что мне нужно.

Я подожду несколько дней, чтобы отметить ответ, так как я все еще хотел бы узнать альтернативу click() в мобильном сафари.

0 голосов
/ 29 января 2012

Похоже, функция щелчка не поддерживается Mobile Safari.document.getElementById ('answer-1'). click возвращает undefined, поэтому вы получаете предупреждениеПопробуйте использовать .trigger ()

...