众所周知,当我们在键盘上点击 TAB 键时,它可以让我们浏览当前打开网页中所有活动的 href 链接。是否可以通过 JavaScript 读取这些链接地址?
示例:
function checkTabPress(key_val) {
if (event.keyCode == 9) {
// Here read the active selected link.
}
}
众所周知,当我们在键盘上点击 TAB 键时,它可以让我们浏览当前打开网页中所有活动的 href 链接。是否可以通过 JavaScript 读取这些链接地址?
示例:
function checkTabPress(key_val) {
if (event.keyCode == 9) {
// Here read the active selected link.
}
}
event.target
应指向所选元素,event.target.href
将为您提供该元素的href值。有关更多信息,请参见mdn。keyup
处理程序。$('a').on( 'keyup', function( e ) {
if( e.which == 9 ) {
console.log( e.target.href );
}
} );
jsFiddle: http://jsfiddle.net/4PqUF/
a
元素,即使之前聚焦的元素不是a
也能触发。尽管使用了jQuery,但还是给一个赞。 - rink.attendant.6以下是要翻译的内容:
<!-- note that not all browsers focus on links when Tab is pressed -->
<a href="http://example.com">Link</a>
<input type="text" placeholder="Some input" />
<a href="http://example.com">Another Link</a>
<textarea>...</textarea>
您可以使用以下方法访问活动链接:
// event listener for keyup
function checkTabPress(e) {
"use strict";
// pick passed event or global event object if passed one is empty
e = e || event;
var activeElement;
if (e.keyCode == 9) {
// Here read the active selected link.
activeElement = document.activeElement;
// If HTML element is an anchor <a>
if (activeElement.tagName.toLowerCase() == 'a')
// get it's hyperlink
alert(activeElement.href);
}
}
var body = document.querySelector('body');
body.addEventListener('keyup', checkTabPress);
这里有一个工作的例子。
只有一个建议,可以使用KeyCodes
代替9
。使用TAB
。
e.key === 'Tab'
- jsruok <body>
<div class="linkCollection">
<a tabindex=1 href="www.demo1.com">link</a>
<a tabindex=2 href="www.demo2.com">link</a>
<a tabindex=3 href="www.demo3.com">link</a>
<a tabindex=4 href="www.demo4.com">link</a>
<a tabindex=5 href="www.demo5.com">link</a>
<a tabindex=6 href="www.demo6.com">link</a>
<a tabindex=7 href="www.demo7.com">link</a>
<a tabindex=8 href="www.demo8.com">link</a>
<a tabindex=9 href="www.demo9.com">link</a>
<a tabindex=10 href="www.demo10.com">link</a>
</div>
</body>
<script>
$(document).ready(function(){
$(".linkCollection a").focus(function(){
var href=$(this).attr('href');
console.log(href);
// href variable holds the active selected link.
});
});
</script>
不要忘记添加jQuery库
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
给定这段HTML代码:
<a href='https://facebook.com/'>Facebook</a>
<a href='https://google.ca/'>Google</a>
<input type='text' placeholder='an input box'>
function checkTabPress(e) {
'use strict';
var ele = document.activeElement;
if (e.keyCode === 9 && ele.nodeName.toLowerCase() === 'a') {
console.log(ele.href);
}
}
document.addEventListener('keyup', function (e) {
checkTabPress(e);
}, false);
document
元素上,用于keyUp
事件,触发一个函数来检查是否按下(或技术上说是释放)了Tab键。
该函数检查当前聚焦的元素以及NodeName
是否为a
。如果是,则进入if
块,在我的情况下,将href
属性的值写入JavaScript控制台。
这是一个jsFiddle
$('a').on( 'keydown ', function( e ) {
if( e.which == 9 ) {
console.log( e.target.href );
}});
在指定的容器或元素中使用TAB和TAB+SHIFT
我们将首先处理TAB和TAB+SHIFT键监听器
$(document).ready(function() {
lastIndex = 0;
$(document).keydown(function(e) {
if (e.keyCode == 9) var thisTab = $(":focus").attr("tabindex");
if (e.keyCode == 9) {
if (e.shiftKey) {
//Focus previous input
if (thisTab == startIndex) {
$("." + tabLimitInID).find('[tabindex=' + lastIndex + ']').focus();
return false;
}
} else {
if (thisTab == lastIndex) {
$("." + tabLimitInID).find('[tabindex=' + startIndex + ']').focus();
return false;
}
}
}
});
var setTabindexLimit = function(x, fancyID) {
console.log(x);
startIndex = 1;
lastIndex = x;
tabLimitInID = fancyID;
$("." + tabLimitInID).find('[tabindex=' + startIndex + ']').focus();
}
/*Taking last tabindex=10 */
setTabindexLimit(10, "limitTablJolly");
});
<div class="limitTablJolly">
<a tabindex=1>link</a>
<a tabindex=2>link</a>
<a tabindex=3>link</a>
<a tabindex=4>link</a>
<a tabindex=5>link</a>
<a tabindex=6>link</a>
<a tabindex=7>link</a>
<a tabindex=8>link</a>
<a tabindex=9>link</a>
<a tabindex=10>link</a>
</div>
event.keyCode
已经弃用。
请改用event.key
。
以下是您可以用来断言event.key
的值:
https://www.w3.org/TR/uievents-key/#named-key-attribute-values
请使用此JavaScript解决方案:
function keyPress(event) {
if (event.key === "Tab") {
// ...
}
}
你需要使用正则表达式
对于网站URL,它是:
var urlPattern = /(http|ftp|https)://[\w-]+(.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?/
将其作为示例使用
var regex = new RegExp(urlPattern ); var t = 'www.google.com';
var res = t.match(regex /g);
对于您必须将您的网页作为字符串传递给此JavaScript中的变量t并获得数组。
document.activeElement
以获取当前聚焦的元素(如果有的话,否则为body
)。您可以检查.nodeName.toUpperCase() === "a"
,然后读取其.href
属性。 - Ian.toLowerCase()
? - rink.attendant.6