我想使用在新选项卡中打开的按钮创建一个链接。
我目前使用的代码当前打开一个空白选项卡,我不确定为什么。
<div class="text text-left">
<h2>WORK</h2>
<h1>Title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pellentesque felis ante, eu convallis sem egestas id.</p>
<p>Etiam fermentum vestibulum hendrerit. Nam ac felis dolor ultricies varius eget vel arcu.</p>
<button href="https://www.behance.net" onclick="window.open(this.href); return false;">View Project</button>
</div>
预期的结果是在单击按钮后打开一个新选项卡 (Behance.com) - 而不是空白选项卡。
谢谢。
不允许在元素button
上使用属性href
而不是添加href
只是在 HTML 中使用data-href
,而在 JavaScript 中只需将this.href
更改为this.getAttribute('data-href')
,如下所示:
<div class="text text-left">
<h2>WORK</h2>
<h1>Title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pellentesque felis ante, eu convallis sem egestas id.</p>
<p>Etiam fermentum vestibulum hendrerit. Nam ac felis dolor ultricies varius eget vel arcu.</p>
<button data-href="https://www.behance.net" onclick="window.open(this.getAttribute('data-href')); return false;">View Project</button>
</div>
由于权限被阻止,直接运行代码对您不起作用。您可以在自己的项目中尝试此操作。
调试这样的东西时,我喜欢做的第一件事是console.log
this.href
,因为您没有得到期望的结果。这里所有问题的迹象都指向this.href
.如果你这样做,你会看到它给你undefined
。
您正在寻找的是window.location.href
.更新您的点击以反映这一点。
https://developer.mozilla.org/en-US/docs/Web/API/Window/location
this.href
无效。使用this.getAttribute('href')
JSFiddle Demo
但是,虽然这回答了您的问题,但这不是好的做法。
正如@Sami Ahmed Siddiqui指出的那样,href
不是按钮元素的有效属性。
相反,您可以使用data-*
属性,例如data-href
。
使用
<a href="https://www.behance.net" target="_new" onclick="window.open(this.href); return false;">View Project</a>
<div class="text text-left">
<h2>WORK</h2>
<h1>Title</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pellentesque felis ante, eu convallis sem egestas id.</p>
<p>Etiam fermentum vestibulum hendrerit. Nam ac felis dolor ultricies varius eget vel arcu.</p>
<button href="https://www.behance.net" onclick="window.open(this.getAttribute('href'),'_blank')" >View Project</button>
</div>