Значит нужно поставить точку останова, выполнять пошагово и поглядеть что в скрипте происходит и что идет не так.
|
Прошел скрипт по каждой строке.
итог выполнения скрипта: 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, время: 05:19. |