如何同时使用onclick和target="_blank"

43

代码如下:

    <p class="downloadBoks" onclick="location.href='Prosjektplan.pdf'">Prosjektbeskrivelse</p>

这样做可以正常工作,但它会在同一个窗口中打开文件。我想应用target="_blank",但是经过一些谷歌搜索后,我仍然无法弄清楚。


7
"target="_blank""是用于<a>标签而不是<p>标签。 - Ricky Stam
location.href=正是我正在寻找的东西。 - CodeRush
5个回答

67

改用window.open()代替:

语法如下:

window.open(strUrl, strWindowName[, strWindowFeatures]);

你的代码应该包括:

window.open('Prosjektplan.pdf');

您的代码应该是:

<p class="downloadBoks"
   onclick="window.open('Prosjektplan.pdf')">Prosjektbeskrivelse</p>

并不完全正确。target属性已不再被弃用。参考:http://dev.w3.org/html5/markup/a.html;而且,使用`a`元素链接到资源要比使用`p`元素加JavaScript更可取。 - Abhitalks
2
哦,是的...在之前的HTML版本中,a元素上的target属性已被弃用,但现在不再被弃用,因为它在Web应用程序中非常有用,特别是与iframe元素结合使用。 - Praveen Kumar Purushothaman
无法在移动设备上运行,并且会被阻止。这比将目标留空以正常工作并侦听事件要糟糕得多。 - doublejosh
请不要忘记添加return=false以保持在主窗口中的相同URL(事件prevent default)=> onclick="window.open('Prosjektplan.pdf');return false;" - eosphere
@eosphere 不是这样的!对于<p>标签不是这种情况。你试图阻止的段落的默认事件是什么? - Praveen Kumar Purushothaman
显示剩余2条评论

42
onclick="window.open('your_html', '_blank')"

2
"_blank" 在那个上下文中是无用的。 - eosphere

8

只需使用window.open()即可:

window.open('Prosjektplan.pdf')

无论如何,评论区的人说得没错。您最好使用<a target="_blank">而不是点击事件。

5

你可以使用

        <p><a href="/link/to/url" target="_blank"><button id="btn_id">Present Name </button></a></p>

是的。这是天才的答案。 - doublejosh

0

使用 window.open 方法很容易导致弹出拦截器发出警报

更好的方法是:

在网页中添加一个带有 id 的表单

<form action="theUrlToGoTo" method="post" target="yourTarget" id="yourFormName"> </form>

然后使用:

function openYourRequiredPage() {
var theForm = document.getElementById("yourFormName");
theForm.submit();

}

并且

onclick="Javascript: openYourRequiredPage()"

您可以使用

method="post"

或者

method="get"

根据您的意愿。


这也不起作用。它被所有主要浏览器检测为弹出窗口并被阻止。 - baoutch
请确保要打开的选项卡是https。 - Phil Allen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接