Javascript 如何在location.href中使用目标

Javascript 如何在location.href中使用目标,javascript,window.open,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) { loc

我目前正在开发一个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的目标,以便可以在新选项卡中打开它

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

说什么?你能为那句话提供参考吗?恕我直言,我想你一定弄错了。例如,在IE6和IE9上

大多数现代浏览器不允许您的代码使用
窗口。除非直接响应用户事件,否则请打开
,以阻止垃圾邮件弹出窗口等;也许你就是这么想的。只要您在响应用户事件时只使用
window.open
,使用
window.open
——所有版本的IE都可以


无法使用
位置
打开新窗口。只需
窗口。打开
或者,当然,用户单击带有
target=“\u blank”
的链接,为什么不在页面上设置一个隐藏的锚定标记,并根据需要设置目标,然后在需要弹出时模拟单击它


这在window.open不起作用的情况下会起作用

试试这个,它模拟了对锚的点击

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

如果使用
触发报告,可以尝试这种方法。当
window.open()
失败时,不要尝试生成一个新窗口,而是使用默认场景通过
target
打开一个新窗口(如果
window.open()
成功,则阻止它)

HTML

你可以试试这个:

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

函数newWindow(url){
窗口打开(url);
}

并调用函数

从2014年起,您可以触发对

的单击。您可以在onclick工作的任何元素上使用该函数:

onclick=“window.open('some.htm','u blank');”


如果使用@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)

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

今天不行,但我已经用过这个技巧,我不得不说我不买它。你会做一个演示吗?在现代浏览器中,如果没有用户事件,这可能无法正常工作。只需在setTimeout上进行测试。不需要,弹出窗口拦截器在ChromeAgen上捕捉到它:没有用户事件。您的示例发生在对单击的响应中;您也可以打开我们的
窗口。打开
。(我试着做一个更新的提琴,但是速度太慢了,我放弃了。你的提琴马上就出现了,但是JSFIDLE为我消失了,所以我甚至无法将你的代码复制到——根据我的经验,更可靠的是——来测试它是否在没有用户事件的情况下工作。)啊,你在我键入(并等待JSFIDLE)时发表了评论.@T.J.Crowder我在jsfiddle上试用后发布了这个答案:它在我的机器上运行。您可能已经阻止了浏览器中的所有弹出窗口,这就是为什么它在您的情况下不起作用。如果是这样,请考虑取消投票,谢谢。乔:你不知道是谁否决了你的答案。你知道我评论过,你知道有人投了反对票。你只知道这些;基于此做出假设是个坏主意。关于答案:使用Chrome、IE9和Firefox上的默认设置,三者都会阻止弹出窗口。适当地。所以它没有在
窗口上提供任何东西。打开
@t.J.Crowder真的很抱歉这个假设。乔:没问题,我刚到这里时,也做了类似的假设。有时这个假设是正确的(在本例中就是这样),有时——经常——它是错误的。:-)@T.J.Crowder谢谢,你真是太好了,给我上了这一课:)问题不在于如何设置处理程序,而在于如何以编程方式设置链接的
目标。你的帖子并没有回答这个问题。这篇帖子在紧要关头对我非常有用!这个解决方案不仅有效,而且很容易合并到一行“代码”中。我用这个答案在iFrame中用一个按钮打开链接。非常有用,很有魅力!(显然,每个命令后面都有分号)
        <script type="text/javascript">
         function newWindow(url){
                window.open(url);
            }
        </script>
<a href="url" target="_blank"> <input type="button" value="fake button" /> </a>
// 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)