我正在尝试使用JavaScript获取当前悬停链接的href,以便在新标签中打开该链接。
我可以使用以下方法获取当前页面的href:
var myLink = window.location.href;
然后致电:
window.open(myLink);
但是我想调用一些JavaScript函数来返回鼠标下元素的链接(就像右键单击然后选择复制链接位置在Chromium或Firefox浏览器中一样)。
修改: 我试过这个:
(function(){
var list = document.querySelectorAll( 'a' );
var myString = "myString_Default_Value";
for ( var i = 0; i < list.length; i ++)
list.item(i).onmouseover = function() { myString = this.href; };
return myString;
})();
我这样做的原因是因为我将外部匿名方法作为字符串从我的.NET应用程序传递(不用担心,我在代码中转义了双引号)然后使用JS进行回调结果(在这种情况下,它是一个字符串结果)。
不幸的是,在我的应用程序中,我不断获得 myString 的默认值。
有什么想法吗?
答案 0 :(得分:2)
如果你想要的只是在新标签页中打开一些链接,只需在新标签页中将target="_blank"
(或target="_new"
)添加到您想要的任何链接。
//[].forEach.call allows calling .forEach on array-like objects.
[].forEach.call(document.querySelectorAll('a'), function(link) {
if (shouldBeInNewTab(link.href)) { link.target = "_blank"; }
});
您通常做的是将事件侦听器添加到页面上的所有链接,如下所示:
[].forEach.call(document.querySelectorAll('a'), function(link) {
link.addEventListener('mouseover', function(event) {
console.log(this.href); // `this` being the element triggering the event.
});
});
但这有缺点:
所以我们可以用事件委托解决这个问题,基本上,我在一个共同的祖先(在这种情况下,document
)添加一个监听器,并在内部过滤项目。 / p>
document.addEventListener('mouseover', function(event) {
var hoveredEl = event.target; // The actual element which was hovered.
if (hoveredEl.tagName !== 'A') { return; } // Ignore non links
console.log(hoveredEl.href); // Do what we want here!
});
答案 1 :(得分:0)
您可以使用jQuery这样做:
$('a').on('mouseover', function(){ console.log( this.href ) } )
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
</ul>
&#13;
没有jQuery的JS:
var list = document.querySelectorAll( "a" );
for ( var i = 0; i < list.length; i ++)
list.item(i).onmouseover = function() { console.log(this.href ) };
答案 2 :(得分:0)
我们走了:
HTML:
<a id="myLink" href="http://www.google.es">Click here</a>
JS:
document.querySelector("#myLink").onmouseover = function(){
window.open(this);
}
编辑:好的,这不回答这个问题,无论如何我都是通过OP的请愿书把它保存在这里。