window.open在新标签的a-tag上

时间:2016-11-08 10:16:40

标签: javascript html hyperlink window.open

我正在使用此代码打开一个新标签:

<a href="javascript:window.open('https://example.com','_blank')">linktext</a>

新页面也会加载到新标签页中,但在源页面上会显示[object]而不是链接。有什么问题?

我不想使用

<a href="https://example.com" target="_blank")">linktext</a>

因为我生成链接列表,并且每个链接的目标页面调用方式不同。对我来说最灵活的方法是使用给出语法。

编辑: 这是生成的链接列表:

<a href="javascript:window.open('https://example.com','_blank')">linktext 1</a>
<a href="javascript:jsfunc1(param1)">linktext 2</a>
<a href="javascript:jsfunc2(param2,param3)">linktext 3</a>

生成href属性。我从桌子上得到了一个。

2 个答案:

答案 0 :(得分:2)

javascript:方案网址的目的是从JavaScript生成替换页面。它不是设计用来运行JavaScript以响应客户端而只留下页面 - 这就是事件处理程序的用途。

新的&#34;页面&#34;您看到的是将对新窗口的引用转换为字符串的结果。

最好不要使用JavaScript来避免这种情况:

<a href="https://example.com" target='_blank'>linktext</a>

你也可以通过避免使用javascript:方案URI并单独绑定你的JS(在href中有合理的回退)来做到这一点:

<a href="https://example.com">linktext</a>

<script>
    document.querySelector("a").addEventListener("click", your_function);
    function your_function(evt) {
        evt.preventDefault();
        // Then do whatever else you want the function to do
    }
</script>

如果你真的想使用JavaScript URL方案(正如我上面提到的,这是一个肮脏的黑客攻击),你可以确保脚本不使用void运算符返回任何内容:

<a href="javascript:void (window.open('https://example.com','_blank'))">linktext</a>

答案 1 :(得分:-1)

以上示例效果很好。结帐代码:

<a href="javascript:window.open('https://example.com','_blank')">linktext</a>

在新标签页中打开链接的其他方式:

<a href="#" onClick="window.open('http://www.yahoo.com', '_blank')">test</a>

没有JS:

<a href="http://yahoo.com" target="_blank">test</a>