1. 程式人生 > >window.open()

window.open()

spa false 根據 frame 彈出窗口 url 是不是 存在 color

使用window.open()方法既可以導航到一個特定的URL,也可以打開一個新的瀏覽器窗口。這個方法可以接收4個參數:要加載的URL、窗口目標、一個特性字符串以及一個表示新頁面是否取代瀏覽器歷史記錄中當前加載頁面的布爾值。通常只傳遞第一個參數,最後一個參數只在不打開新窗口的情況下使用。

如果為window.open()方法傳遞了第二個參數,而且該參數是已有窗口或者框架的名稱,那麽就會在具有該名稱的窗口或者框架中加載第一個參數指定的URL。

window.open("http://www.cnblogs.com/yuyujuan/" target="topFrame");
// 等同於
<a href
="http://www.cnblogs.com/yuyujuan/" target="topFrame"></a>

如果存在一個名叫"topFrame"的窗口或者框架,就會在該窗口或者框架加載這個URL,否則就會新創建一個新窗口並命名為"topFrame",此外,第二個參數也可以是_self、_parent、_top、_blank。

彈出窗口

如果給window.open()傳遞的第二個參數並不是一個已經存在的窗口或框架,那麽該方法就會根據在第三個參數位置上的字符創建一個新窗口或新標簽頁,如果沒有傳入第三個參數,那麽就會打開一個帶有全部默認設置的新瀏覽器窗口(或者打開一個新標簽頁)。在不打開新窗口的情況下,會忽略第三個參數。

第三個參數是一個逗號分隔的設置字符串,表示在新窗口中都顯示哪些特性,具體設置選項如下:

技術分享圖片

window.open("http://www.wrox.com/","wroxWindow","height=400,width=400,top=10,left=10,resizable=yes");

運行上面的代碼會打開一個新的可以調整大小的窗口,窗口的初始大小為400*400像素,並且距屏幕上沿和左邊個10像素.

window.open()方法會返回一個指向新窗口的引用,引用的對象與其他window對象大致相似,但是我們可以對其進行更多的控制。

var newWin =  window.open("http://www.wrox.com/","wroxWindow","height=400,width=400,top=10,left=10,resizable=yes");
newWin.resizeTo(500,500);
newWin.moveTo(100,100);
newWin.close();

上面的方法僅限於通過window.open()打開的彈出窗口,有些瀏覽器在默認情況下可能不允許我們針對主瀏覽器窗口調整大小或移動位置,而且,瀏覽器的主窗口,如果沒有得到用戶的允許是不能關閉的,但彈出窗口可以調用close()方法,彈出的窗口關閉之後,窗口的引用仍然還在。

彈出窗口屏蔽程序

大多數瀏覽器都內置有彈出窗口屏蔽程序,而沒有內置次程序的瀏覽器,也可以安裝一些帶有內置屏蔽程序的工具,結果就是用戶可以將絕大多數不想看到的的彈出窗口屏蔽掉,於是,在彈出窗口被屏蔽的時候,就應該考慮兩種可能性。如果是瀏覽器內置的屏蔽程序阻止的彈出窗口,那麽window.open()很可能會返回null,此時,只要檢測這個返回的值就可以確定彈出窗口是否被屏蔽了。

var wroxWin = window.open("http://www.baidu.com");
if(wroxWin == null){
    alert("The popup was blocked");
}

如果是瀏覽器擴展或其他程序阻止的彈出窗口,那麽window.open()通常會拋出一個錯誤,因此,要想準確地檢測彈出窗口是否被屏蔽,必須在檢測返回值的同時,將對window.open()的調用封裝在一個try-catch塊中:

var blocked = false;
try{
     var wroxWin = window.open("http://www.baidu.com");
     if(wroxWin == null){
          blocked = true;
    } 
}catch(ex){
       blocked = true;
}
if(blocked){
      alert("The popup was blocked");
} 

在任何情況下,上面的代碼都能檢測出調用window.open()打開的彈出窗口是不是被屏蔽了,但是,檢測彈出窗口是否被屏蔽只是一方面,它並不會阻止瀏覽器顯示與被屏蔽的彈出窗口有關的消息。

window.open()