LINUX.ORG.RU

javascript вызов click() на <a>


0

1

<a href='http://google.ru' id='rmrf'>test</a>

<script>
document.getElementById('rmrf').click();
</script>

Нагуглил что стандарт js не допускает вызова click() на теге <a>
При этом этот код отлично работает в Опере и ФФ, но не работает в webkit, где он мне и нужен.

Реально ли как-то вызвать клик в вебките?
Причем проблема не решается простым извлечением href и переходом на него. На ссылку навешана туева хуча внешних обработчиков да и сама она похоже рисуется яваскриптом.

На ссылку навешана туева хуча внешних обработчиков

Не сильно в этом разбираюсь, но зачем обязательно click()? Что тебе мешает последовательно вызвать все эти обработчики и скрипт?

Если в движке нет какой-то функциональности её приходится писать самому, ведь так?

ziemin ★★
()
Ответ на: комментарий от RedPossum

$().click() не выдает ошибки, но и результата нет

сайт не мой, менять его нельзя.

Задача - заставить клик сработать именно в webkit у phantomjs.

Все обработчики я бы и рад вызвать, но понятия не имею как их узнать, код слишком запутанный. Если бы был какой-то универсальный способ их увидеть - тогда проблема была бы решена.

sergey-novikov ★★★
() автор топика
Ответ на: комментарий от sergey-novikov

$().click() не выдает ошибки, но и результата нет

Так попробуй

$("#mylink")[0].click();

emissar ★★
()
Последнее исправление: emissar (всего исправлений: 1)
Ответ на: комментарий от sergey-novikov

Первая ссылка на небезизвестном ресурсе скорее всего то что тебе надо.

zz ★★★★
()

За постинг в Development того, что должно быть в Web-development пора начинать скор снимать.

На ссылку навешана туева хуча внешних обработчиков да и сама она похоже рисуется яваскриптом.

Злобные буратины должны страдать.

anonymous
()
Ответ на: комментарий от anonymous

найдено 2 решения:

// вставляем в ссылку кнопку и жмем на неё
butt = document.createElement('button')
butt.id = 'BUTT'
document.getElementById('LINK').appendChild(butt)
butt.click()


// создаем Event и вешаем на ссылку
var evObj = document.createEvent('Events');
evObj.initEvent('click', true, false);
document.getElementById('LINK').dispatchEvent(evObj);


Причем второе решение не работает на обвешенном яваскриптом сайте, оно тупо редиректит на href ссылки, не обращая внимания ни на какой аякс.

А вот первый костыль, придуманный мной, работает отлично.

sergey-novikov ★★★
() автор топика
Ответ на: комментарий от vtVitus

спасибо, этот способ работает везде и на всем - button, a, input type='submit'.

sergey-novikov ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.