javascript
  • firefox
  • 2008-11-06 76 views 3 likes 
    3

    我有几个链接应该都在同一个窗口或选项卡中打开。 要做到这一点我已经给窗口的名称就像这个例子代码:Javascript window.open在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 OK,但Firefox总是打开一个新的标签/窗口。 任何想法?

    回答

    8

    Javascript中的window.open()函数是专为打开一个新窗口而设计的,请参阅:w3schools documentation。实际上,IE听起来像是以非标准的方式处理事物(这并不奇怪)。

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

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

    +3

    +1:“针对Firefox开发,然后针对IE进行修复” – Kon 2008-11-06 14:59:56

    +0

    您有一点,但通常只能说...因为如果您要实现您自己的DOM处理,FireFox允许大量废话! - ) – roenving 2008-11-06 15:18:01

    6

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

    试试这个:

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

    实际上,通过gabriel1836链接到W3Schools的文件仅仅是一个功能非常非常简短的总结。

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

    MDC/DOM/Window.open

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

    如果名为 strWindowName窗口已经存在,那么, 而不是打开一个新的窗口, strUrl被加载到现有 窗口。在这种情况下,该方法的返回值 是现有窗口 和strWindowFeatures被忽略。 提供一个空字符串strUrl 是一种通过名称获取对打开的 窗口的引用而不更改 窗口位置的方法。如果你想 上的 window.open()每次调用打开一个新窗口,你应该使用 特殊值_blankstrWindowName

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

    因此,无论文档的Mozilla为人们提供了针对他们自己的浏览器是错误什么奇怪的是与你的测试系统:)

    而且,当前的A-HREF符号是坏的网站,并会激怒用户。

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

    是一个非常好的方法来做到这一点。

    许多人会本能地在'中间点击'链接,他们想要在新标签中手动打开,并且只有href作为“#”激怒他们堕落。

    的“#”诀窍是多余的,有点坏把戏停下去什么地方意外的页面,但如果从上回FALSE这只是因为缺乏如何使用onclick

    理解-click事件,将取消链接默认操作(默认操作为导航当前离开网页)

    甚至比这更好的符号是使用非侵入的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> 
    
    2

    你为什么不只是使用普通的HTML像

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

    ,而不是使用JavaScript的?

    相关问题