<a href='http://google.ru' id='rmrf'>test</a> <script> document.getElementById('rmrf').click(); </script> Нагуглил что стандарт js не допускает вызова click() на теге <a> При этом этот код отлично работает в Опере и ФФ, но не работает в webkit, где он мне и нужен. Реально ли как-то вызвать клик в вебките? Причем проблема не решается простым извлечением href и переходом на него. На ссылку навешана туева хуча внешних обработчиков да и сама она похоже рисуется яваскриптом.
Ну так глянь, что у него в onClick, выполни код. У jQuery ведь есть функция click() Можно её распотрошить или её же и использовать. Только учитывая, что это будет всё же эмуляция клика (например, если там есть сплывающие окна в функции-обработчике, то они заблокированы браузером будут).
onclick() у него нет jquery.click() тоже не работает PHP: <a aria-controls="js_2" aria-owns="u_0_u" class="uiPopoverButton _p uiButton uiButtonSuppressed uiButtonNoText" href="#" role="button" aria-haspopup="true" aria-expanded="true" rel="toggle" id="u_0_10"> <i class="mrs img sp_7jhjgj sx_e63a5e"></i> <span class="uiButtonText"></span></a>
Используй jquery, через голый js cложно думаю тебе будет. След. вопрос будет как поймать объект а вообще лучше написать что хочешь сделать
>>document.getElementById('u_0_10').onClick undefined $().click() - не выдает ни ошибок, ни результата
Сорри, не onClick, а onclick Code: alert(document.getElementById('u_0_10').onclick); Если undefined - значит обработчик не задан, ищи у дочерних элементов.
найдено 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 ссылки, не обращая внимания ни на какой аякс. А вот первый костыль, придуманный мной, работает отлично. И ещё раз повторюсь - jquery абсолютно ничего не решает. Тег <a> не поддерживает .click() и webkit тоже, несмотря на то что Опера, ФФ, Хром и тп - поддерживают.
Code: var elem = document.getElementById('test'); elem.onclick = function() { alert('onclick'); return false; } (eval(elem.onclick)); А в теле html Code: <a href="http://test.ru" id="test">test</a>
Я и не предлагаю код мофидицировать, я пример показывал. Смотришь, что в onclick у элемента, выполяешь это через eval() - вот и эмуляция готова. И никакой разницы, каков тип элемента.
PHP: // input CSS-selector for button/a/input-submit, click this shit, return true/false function anchor_click(selector) { link = document.querySelector(selector); if (link === false) return false; if (document.createEvent) { var event = document.createEvent("MouseEvents"); event.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); link.dispatchEvent(event); } else if (link.fireEvent) { link.fireEvent("onclick"); } }; финальное решение жмет на все и всегда, находит элемент по css-селектору например: anchor_click('#button')
Специом проверил, точно работает в Хроме (Mac), Safari и FF: HTML: <body> <a id="Link" href="http://www.google.com" onclick="alert(1)">CLICKME</a> </body> <script> document.getElementById("Link").click(); </script>