Javascript window.open Firefox中的奇怪行为

时间:2008-11-06 14:40:16

标签: javascript firefox

我有一些链接应该在同一个窗口或标签中打开。 为了实现这一点,我给了窗口一个名称,如下例代码:

<a href="#" onClick='window.open("http://somesite.com", "mywindow", "");'>link 1</a>
<a href="#" onClick='window.open("http://someothersite.com", "mywindow", "");'>link 2</a>

这在Internet Explorer中运行正常,但firefox总是会打开一个新的选项卡/窗口。 有任何想法吗?

4 个答案:

答案 0 :(得分:14)

实际上,由gabriel1836链接的W3Schools文档只是功能的非常简短的摘要。

奇怪的是,mozilla自己的开发人员参考 CONTRADITCS 这个逻辑。

MDC / DOM / Window.open

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

如果是带有名称的窗口    strWindowName 已经存在,那么,   而不是打开一个新窗口,    strUrl 被加载到现有的   窗口。在这种情况下返回值   该方法是现有的窗口   并忽略 strWindowFeatures 。   为 strUrl 提供空字符串   是一种获得对开放的引用的方法   窗口的名称没有改变   窗口的位置。如果你想   打开每个电话的新窗口    window.open(),你应该使用   特殊值 _blank for   的 strWindowName

但是,该页面还指出可以安装许多可以更改此行为的扩展。

因此,mozilla为自己的浏览器定位的文档是错误,或者您的测试系统有些奇怪:)

此外,您当前的A-Href表示法对网络不利,并会激怒用户。

  <a href="http://google.com"  
     onclick="window.open( this.href, 'windowName' ); return false" >
     Text
  </a>

实质上是一种更好的方式。

许多人会本能地“中间点击”他们想要在新标签中手动打开的链接,并且让你唯一的href为“#”会让他们感到堕落。

“#”技巧是一个冗余且有点糟糕的技巧,可以阻止页面无意中进入某个地方,但这只是因为对如何使用onclick缺乏了解

如果您从点击事件返回FALSE,则会取消链接默认操作(默认操作是当前页面导航)

甚至比这个表示法更好的是使用像这样的非侵入式JavaScript:

 <a href="google.com" rel="external" >Text</a>

以后

 <script type="text/javascript">
 jQuery(function($){ 
        $("a[rel*=external]").click(function(){ 
            window.open(this.href, 'newWindowName' ); 
            return false; 
        });
 }); 
 </script>

答案 1 :(得分:8)

Javascript中的window.open()函数专门用于打开一个新窗口,请参阅:w3schools documentation。实际上听起来IE正在以非标准的方式处理事情(这并不奇怪)。

如果您想使用Javascript将现有位置重新定位到新页面,您应该查看location.replace()函数。

一般来说,我建议您为Firefox开发,然后修复IE。 Firefox不仅提供了更好的开发工具,而且其W3C标准的实现更加正确。

答案 2 :(得分:6)

默认情况下,如果在window.open参数上省略了维度,FF会使用新选项卡。您需要为新的浏览器窗口添加维度。

试试这个:

<a href="#" onClick='window.open("http://somesite.com", "mywindow", "width=700", "height=500");'>link 1</a>

答案 3 :(得分:2)

为什么不使用像

这样的纯HTML

<a href="http://www.google.com" target="my_window_tab_frame_or_iframe">Link</a>

而不是使用JavaScript?