Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:void(0)和target="_“空白”;行为_Javascript_Html - Fatal编程技术网

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”时,此页面将提供帮助!谢谢