javascript
  • firefox
  • 2008-11-06 101 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的?

    相關問題