javascript:void(0)和target="_“空白”;行为
首先,我没有真正的问题。我问这个只是出于好奇 在同一链接中使用javascript:void(0)和target="_“空白”;行为,javascript,html,Javascript,Html,首先,我没有真正的问题。我问这个只是出于好奇 在同一链接中使用javascript:void(0)和target=“\u blank”时,我意外地遇到了一个奇怪的行为,如下所示 <a href="javascript:void(0);" target="_blank" /> Link </a> 我发现Chrome正在正常处理这个问题,当你点击链接时什么也不做,而IE和Firefox打开了一个空白的新选项卡 我的问题是,javascript:void(0)不应该阻止链
javascript:void(0)
和target=“\u blank”
时,我意外地遇到了一个奇怪的行为,如下所示
<a href="javascript:void(0);" target="_blank" /> Link </a>
我发现Chrome
正在正常处理这个问题,当你点击链接时什么也不做,而IE
和Firefox
打开了一个空白的新选项卡
我的问题是,javascript:void(0)
不应该阻止链接触发任何点击事件,即使它指向新的选项卡/窗口?为什么target=“\u blank”
会过度隐藏它
另外,如果我用一些后端语言填充href
属性,并且我更喜欢target=“\u blank”
属性旁边的href
硬编码,那么最好的方法是什么
<a href=# onclick="return false;">I look like a link!</a>
总是用这个
编辑:对于您关于void(0)的问题,onclick应该比href属性具有更高的优先级,因为它提供了更丰富的功能,并且能够实际阻止href运行-因此my返回false
。如果存在onclick事件,href仅适用于机器人和旧浏览器
此外,是否使用格式奇怪的URL执行常规导航由浏览器自行决定。如果链接以散列开头,它应该跳转到书签。但是当它为空或包含其他协议时,如果决定尝试访问新文档,则完全取决于浏览器。传统上,输入javascript:
伪协议用于处理当前页面的bookmarklet,因此任何javascript:
不执行document.write()
或其他破坏性修改的操作都应使页面保持未加载状态
Edt2:我不确定HeRF中的后端语言是什么意思,但是考虑HTML有效性>代码>数据->代码>属性,如果你的代码不属于逻辑上的HREF属性,那么就给你的代码工作。< /P> < P>我用简单的技巧解决了这个问题。这可能有用
我已经根据链接动态删除了目标属性。i、 e如果链接未定义或为空或javascript:void(0),那么我们将使用下面的代码删除目标属性 如果链接是正确的,我们将为该超链接添加target属性(“second If condition”将这样做,因为在我的页面中链接是动态的) 我已经复制了示例html文件(Test.html)。 如果我们想在加载页面时删除属性,请复制此文件中的脚本代码,并将其粘贴到所需文件的末尾 如果我们想将此应用于动态链接,我们必须将此代码放在一个函数中,并在需要时调用它 此代码将适用于该页面中的所有超链接。我们可以通过使用类或任何其他属性将此限制为特定的链接集Test.html
---------
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<a href="javascript:void(0);" target="_blank">Link1</a>
<a href="javascript:void(0);" target="_blank">Link2</a>
<a href="www.url1.com" target="_blank">Link3</a>
<a href="www.url2.com" target="_blank">Link4</a>
<script>
$("a").each(function() {
if(typeof(this.href) == 'undefined' || this.href == 'javascript:void(0);') {
$(this).attr('href', 'javascript:void(0);');
$(this).removeAttr('target');
}
if(typeof(this.href) != 'undefined' && this.href != 'javascript:void(0);') {
var s_link = this.href;
if (s_link.indexOf('http://') === -1 && s_link.indexOf('https://') === -1) {
s_link = 'https://' + s_link;
}
$(this).attr('href', s_link);
$(this).attr('target', '_blank');
}
});
</script>
Test.html
---------
$(“a”)。每个(函数(){
if(typeof(this.href)='undefined'| | this.href=='javascript:void(0);'){
$(this.attr('href','javascript:void(0);');
$(this.removeAttr('target');
}
if(typeof(this.href)!='undefined'&&this.href!='javascript:void(0);'){
var s_link=this.href;
if(s_link.indexOf('http://')==-1&&s_link.indexOf('https://'))==-1){
s_-link='https://'+s_-link;
}
$(this.attr('href',s_链接);
$(this.attr('target','u blank');
}
});
我想javascript:void(0)
被认为是不好的做法。更好的方法是不使用空的锚定标记,而是使用样式化的跨度。我的回答怎么没有提供答案?我提供的代码实现了我认为您需要的功能—它看起来像一个链接,但不访问任何内容。你要求最好的方法,我给出了我最好的方法。这篇文章被自动标记为低质量,因为它只是代码。您是否介意通过添加一些文本来扩展它,以解释它如何解决问题?答案对我很有帮助,它可能不提供问题的答案,但当我们在google中键入“javasScript:void(0)opennewpage”时,此页面将提供帮助!谢谢