如何在location.href中使用target

时间:2012-01-20 16:33:19

标签: javascript window.open

我目前正在开发一个Web应用程序,我需要打开一个弹出窗口来显示报告。问题是某些版本的资源管理器不支持window.open javascript函数,所以在这种情况下我抓住错误并用location.href打开新的url。代码如下:

try {
    window.open(url, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
} catch(e) {
    location.target = "_blank";
    location.href = url;
}

问题是location.target无法正常工作,我想知道是否有办法指定location.href的目标,以便可以在新选项卡中打开它。

9 个答案:

答案 0 :(得分:25)

尝试这个,模拟锚点击。

var a = document.createElement('a');
a.href='http://www.google.com';
a.target = '_blank';
document.body.appendChild(a);
a.click();

答案 1 :(得分:12)

  

问题是某些版本的资源管理器不支持window.open javascript函数

说什么?你能为这个陈述提供参考吗?尊重,我认为你一定是错的。例如,IE6和IE9上的This works

大多数现代浏览器不会让您的代码使用window.open,除非直接响应用户事件,以防止垃圾邮件弹出等等;也许这就是你的想法。只要您在响应用户事件时仅使用window.open,就可以使用window.open - 使用所有版本的IE。

无法使用location打开新窗口。只需window.open,或者用户点击target="_blank"的链接。

答案 2 :(得分:12)

您可以在onclick工作的任何元素上使用它:

onclick="window.open('some.htm','_blank');"

答案 3 :(得分:3)

你可以试试这个:

        <script type="text/javascript">
         function newWindow(url){
                window.open(url);
            }
        </script>

并调用函数

答案 4 :(得分:3)

如果您使用@qiao的解决方案,也许您会想要删除附加的子项,因为标签保持打开状态,随后的点击会向DOM添加更多元素。

// Code by @qiao
var a = document.createElement('a')
a.href = 'http://www.google.com'
a.target = '_blank'
document.body.appendChild(a)
a.click()
// Added code
document.body.removeChild(a)

也许有人可以在他的帖子上发表评论,因为我不能。

答案 5 :(得分:2)

如果您使用<a/>来触发报告,则可以尝试此方法。在window.open()失败时,不要尝试生成新窗口,而是使默认方案通过target打开一个新窗口(如果window.open()成功则阻止它。)

HTML

<a href="http://my/url" target="_blank" id="myLink">Link</a>

JS

var spawn = function (e) {
    try {
        window.open(this.href, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0")
        e.preventDefault(); // Or: return false;
    } catch(e) {
    // Allow the default event handler to take place
    }
}

document.getElementById("myLink").onclick = spawn;

答案 6 :(得分:0)

为什么不在页面上设置隐藏的锚标记,并根据需要设置目标,然后在需要弹出时模拟单击它?

How can I simulate a click to an anchor tag?

这适用于window.open不起作用的情况

答案 7 :(得分:0)

截至2014年,您可以触发点击<a/>标记。但是,出于安全原因,您必须在click事件处理程序中执行此操作,否则浏览器会将其标记为弹出窗口(某些其他事件可能允许您安全地触发打开)。

jsFiddle

答案 8 :(得分:0)

<a href="url" target="_blank"> <input type="button" value="fake button" /> </a>