window.open 在新标签的标签上

window.open on a-tag for new tab

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

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

新页面也加载到新选项卡中,但在源页面显示的是 [object] 而不是 link。怎么了?

我不想用

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

因为我生成了一个 link 的列表,并且每个 link 的目标页面被不同地调用。对我来说最灵活的方法是使用 give 语法。

编辑: 这是生成的 linklist:

<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 属性。我从 table.

上面的例子效果很好。签出以下代码:

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

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

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

没有 JS :

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

javascript: 方案 URL 的要点是 从 JavaScript 生成替换页面。它的设计目的不是 运行 JavaScript 响应客户端,同时让页面保持独立——这就是事件处理程序的用途。

您看到的新 "page" 是将对新 window 的引用转换为字符串的结果。

最好不要为此使用 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 方案(正如我上面所建议的,这是一个肮脏的 hack),你可以确保脚本 returns nothing using void 运算符:

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