Значит нужно поставить точку останова, выполнять пошагово и поглядеть что в скрипте происходит и что идет не так.
|
Прошел скрипт по каждой строке.
итог выполнения скрипта: this -> Window #standart_order arguments -> [] element -> a.standart_order hash -> "standart_order" toString -> function() Т.е. хеш распознал, но на строке element.click(); клик не происходит |
Есть варианты?
|
Цитата:
1 Переходы по ссылкам, возможны только после клика пользователем на ссылке -политика безопасности браузера 2 Вызов функции обработчика клика , и программная эмуляция клика вещи разные |
Обнаружил любопытную деталь.
когда выполняется скрипт <script> (function(){ var hash = location.hash.substring(1); if (hash) { var element = document.querySelector('.' + hash); if (element) { element.click(); } } })(); </script> то уже на строке <if (element)> дебаггер показывает в строке <element.click();> инициализированную переменную "element" как "a.standart_order" а скрипт a.standart_order.click() через консоль, естесственно, не работает. А вот document.querySelector('.standart_order').click() через консоль работает. Поэтому я пределал скрипт на такой: <script type="text/javascript"> (function(){ var hash = location.hash.substring(1); if (hash) { var element = ('.' + hash); if (element) { document.querySelector('element').click(); } } })(); </script> Тогда в строке <document.querySelector('element').click();> переменная "element" выглядит как ".standart_order" Но при этом вываливается ошибка: TypeError: document.querySelector(...) is null (?) /checkout/ (строка 782) () /checkout/ (строка 777) document.querySelector('element').click(); /checkout/ (строка 782) |
Цитата:
|
Возможно, вы правы, dmitriymar. Даже в этом варианте
<script type="text/javascript"> (function(){ var hash = location.hash.substring(1); if (hash) { var element = document.querySelector('.' + hash); if (element) { document.querySelector('.standart_order').click(); } } })(); </script> кнопка не нажимается. хотя сама по себе строка document.querySelector('.standart_order').click(); через консоль отрабатывается |
<script type="text/javascript"> (function(){ var hash = location.hash.substring(1); if (hash) { var element = document.querySelector('.' + hash); if (element) { alert(hash); } } })(); </script> отрабатывает и показывает текущий хеш |
Странная история. Если элемент был найден, то условие if (element) просто обязано выполниться. Попробуйте убрать условие и всегда вызывать element.click(). Ваши варианты неверные.
|
Быть может дело в том, что событие на клик этой кнопки отрабатывает другой скрипт?
<script type="text/javascript"> $(document).ready(function(){ $('.standart_order').click(function(){ $('#standart-order-block').css("display","block"); $('#quick-order-prev').css("display","none"); $('#standart-order-prev').css("display","none"); $('#credit-order-prev').css("display","none"); }); |
Часовой пояс GMT +3, время: 20:58. |