Я пытаюсь прочитать статью, но мне надоело нажимать гиперссылку «следующая страница», и я попытался запустить приведенный ниже код.
(какой код для: Нажатие Enter найдет гиперссылку класса «x-hidden-focus») и щелкните по ней.
Приведенный ниже код работал, нажимая кнопку при нажатии EnterKey для другой веб-страницы, но он не работал с гиперссылкой. Я попытался запустить код, который прокомментирован, но ни один из кодов не устранил мою проблему.
Класс гиперссылки, которую я хочу нажать, - ".x-hidden-focus".
Это ссылка на статью.
$(document).keypress(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
//$(".x-hidden-focus")[0].click();
$(".x-hidden-focus").click();
}
});
NOTE: I am using this code as a userscript in tampermonkey (Hope this helps).
Я тоже пробовал этот код, но он не работал. Я хочу быть более образованным (выбирает ли [0] первый элемент в списке массивов класса ".x-hidden-focus")?
Если мне не изменяет память, я почти уверен, что CLICK предназначен для форм, то есть кнопок. Проверьте сообщение, предоставленное @Alex ниже, поскольку я считаю, что установка местоположения браузера по URL-адресу (HREF) будет одинаково работать



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете попробовать просто перейти к href, описанному ссылкой, которую вы пытаетесь щелкнуть:
document.location = $("a.x-hidden-focus").attr("href")
Что с вашим кодом станет:
$(document).keypress(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
document.location = $("a.x-hidden-focus").attr("href");
}
});
На основе предоставленной вами статьи мы видим, что HTML-код кнопки, которую вы пытаетесь нажать, имеет следующий вид:
<a href = "adding-a-controller" data-linktype = "relative-path" class = "x-hidden-focus">Next</a>
Однако, если вы нажмете «Далее», мы увидим, что теперь есть 2 кнопки:
<a href = "getting-started" data-linktype = "relative-path" class = "x-hidden-focus">Previous</a>
<a href = "adding-a-view" data-linktype = "relative-path" class = "x-hidden-focus">Next</a></p>
И теперь ваш код будет:
$(document).keypress(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
document.location = $("a.x-hidden-focus:contains('Next')").attr("href");
}
});
РЕДАКТИРОВАТЬ
Мои предположения о том, что класс уже присутствует в элементе, были ошибочными.
Поскольку класс добавляется только после того, как вы наводите ссылку, вам нужно будет найти ссылку только по тексту:
$("a:contains('Next')");
Однако вы могли бы быть более точными, используя класс контейнера:
$("div.step-by-step").find("a:contains('Next')").attr("href")
Проголосуйте, поскольку это, похоже, сработает, вопрос в том, что мобильный телефон удобен, поскольку я уверен, что мобильные браузеры не любят перенаправление javascript из-за платы за мобильные данные.
@DataCure Он срабатывает при нажатии клавиши ввода, что, на мой взгляд, не имеет отношения к мобильным устройствам.
Вы можете улучшить селектор, чтобы получить только правильную кнопку, в этом случае это будет $('.x-hidden-focus:contains("Next")'), ваш код теперь ведет на неправильную страницу
Этот код просто создан для меня. Кстати, этот код привел меня к ссылке 404 Ссылка закончилась на (/ undefined) docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started /…
«Следующий» якорь не имеет никакого класса в начале, описанный класс добавляется после наведения курсора.
Просто нужно добавить слушателя для события щелчка, например:
$(document).on('keypress', function(e) {
if (e.keyCode === 13) {
$('.x-link').click();
}
$('.x-link').on('click', function() {
let url = $(this).attr('href')
window.open(url)
})
})
Кнопка на странице документации создается динамически, и класс не существует на ней, пока вы не нажмете / не наведете на нее курсор. Вам нужно будет выбрать кнопку с помощью
$('a:contains("Next")')
затем возьмите первую из трех полученных ссылок и возьмите ее href
$('a:contains("Next")').eq(0).attr('href')
Теперь вы можете установить местоположение
document.location = $('a:contains("Next")').eq(0).attr('href')
$(document).keypress(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
document.location = $('a:contains("Next")').eq(0).attr('href')
}
});
Это сработало для меня. Спасибо. Думаю, я могу сделать то же самое и для предыдущей ссылки?
Да. Просто выберите "Назад" вместо "Далее", затем
Я сделал то же самое для предыдущей ссылки, она сработала. Просто через несколько дней что-то пошло не так, и ни одно событие не зафиксировано, кроме 13 (введите Key).
Мне было интересно, какие ключевые события можно распознать, кроме (enterKey) = 13?
Я использовал этот сайт для извлечения кодов клавиш каждой кнопки, но ни одна из них не работает, кроме enterKey = 13.
Как сказал @bambam, вы должны сначала выбрать ссылку:
`$('a:contains("Next")')`
Затем перейдите к href, описанному ссылкой:
$('a:contains("Next")').eq(0).attr('href')
И вы можете сделать то же самое для предыдущей ссылки. Ваш окончательный код будет:
$(document).keydown(function(event){
var which = (event.which ? event.which : event.keyCode);
if (which == '13'){
document.location = $('a:contains("Next")').eq(0).attr('href')
}
else if (which == '16'){
document.location = $('a:contains("Previous")').eq(0).attr('href')
}
});
When you press EnterKeycode:13 you go to the next page.
When you press ShiftKeycode: 16 you go to the previous page.
Я думаю, что ваш код лучше всего работает там, где в моем случае лучше работает .keydown, а не .keypress.
Можете ли вы прояснить свой вопрос следующим образом. Вы предоставили JS, но не предоставили HTML. Итак, что происходит в HTML. Ваш jQuery запрашивает селектор класса и, таким образом, может быть массивом элементов. Это может быть или не быть проблемой, но пока вы не предоставите HTML-код, я не могу точно сказать, есть ли причина, по которой вы не дали URL-адресам идентификатор, чтобы сделать его конкретным