2009-06-13 109 views
4

我有問題,打開彈出窗口在JavaScript我有這樣的功能在IE6和IE7打開我的彈出窗口:JavaScript彈出問題在Internet Explorer中!

function open_window(Location,w,h) //opens new window 
{ 
    var win = "width="+w+",height="+h+",menubar=no,location=no,resizable,scrollbars,top=500,left=500"; 
    alert(win) ; 
    window.open(Location,'newWin',win).focus(); 

} 

它的工作。我的意思是我的新窗口打開,但發生錯誤。錯誤消息是:

'window.open(...)'爲空不是一個對象。
你想countinue在這個頁面上運行腳本?

然後我在onclick事件按鈕,它會調用一個函數來關閉當前窗口的刷新開瓶器功能

function refreshParent(location) 
{ 
    window.opener.location.href = location ; 
    window.close(); 
} 

這也使我的錯誤:window.opener.location爲空或不一個對象,但我敢肯定,我傳遞正確的參數

我這樣稱呼它:

的第二部分:

<input type="button" name="pay" value="test" onclick="refreshParent('index.php?module=payment&task=default')" > 

的第一部分:

<a onclick="javascript:open_window('?module=cart&task=add&id=<?=$res[xproductid]?>&popup=on','500' , '500')" style="cursor:pointer" id="addtocard"> <img src="../images/new_theme/buy_book.gif" width="123" border="0"/> </a> 

它真的讓我困惑。請幫忙;)

+0

聽起來像一個彈出窗口阻止問題。 – Cerebrus 2009-06-13 09:08:32

+0

但是它仍然給我錯誤請檢查這個網站 www.pouran.net 不幸的是這個網站在波斯語,我不認爲你是舒適的。所以如果你可以繼續嘗試添加一些東西到你的籃子裏,那麼你會看到錯誤信息。坦克。 – mehdi 2009-06-13 11:55:51

+0

嗯,我不明白一個單詞,但我想我設法找到有問題的頁面。我也蠢蠢欲動地打開彈出窗口,並從裏面的按鈕關閉 - 之後,頁面刷新自己。我沒有注意到任何錯誤。一切似乎都很好。也許這是你電腦裏的東西?你有沒有在別人嘗試過嗎? – 2009-06-13 15:26:45

回答

6

當使用window.open打開彈出窗口的彈出窗口攔截器,這幾天的特徵幾乎所有的現代瀏覽器的window.open的返回值()封鎖是不是一個窗口對象,但爲空。

爲了規避這些問題,您需要在嘗試調用window.open()的任何方法之前測試返回的值。

下面是一段代碼來演示如何去解決這個問題:

function open_window(Location,w,h) //opens new window 
{ 
    var options = "width=" + w + ",height=" + h; 
    options += ",menubar=no,location=no,resizable,scrollbars,top=500,left=500"; 

    var newwin = window.open(Location,'newWin',options); 

    if (newwin == null) 
    { 
    // The popup got blocked, notify the user 
    return false; 
    } 

    newwin.focus(); 
} 

在一般情況下,彈出窗口應只作爲最後的手段或在受控環境(公司內部網站等) 。彈出窗口阻止程序往往表現得非常不一致,並且在給定的瀏覽器中安裝的彈出窗口阻止程序可能不止一個,因此指導用戶如何允許給定網站的彈出窗口不一定是解決方案。例如:IE7 + Google工具欄=兩個彈出窗口攔截器。

如果我可以建議,也許你應該考慮使用這樣的事情: http://jqueryui.com/demos/dialog/

的優點很多:

  1. 換膚,讓您可以創建一個更加一致的外觀,以符合您的網站。
  2. 沒有彈出式窗口攔截器。
  3. 良好的API和文檔在大多數(如果不是全部的話)主流瀏覽器中都是一致的。

如果您仍然要求新打開的「窗口」包含外部URL,則可以在打開的對話框窗口中使用IFRAME。

希望這會有所幫助,

Lior。

0

對我來說工作得很好。在IE6/7/8中測試。

當然,我無法用您的網址進行測試,所以我用簡單的文件名替換了這些文件。我建議你用簡單的文件名嘗試一下,看看它是否也失敗了。

那旁邊......

你並不需要添加「的javascript:」在onclick屬性值的開頭。

如果您向帶有與open_window相同的URL的鏈接添加了href =「...」屬性,那也不錯。然後它將成爲一個真正的鏈接,你不必添加遊標:指向它的指針。例如:

<a href="?module=cart&task=add&id=<?=$res[xproductid]?>&popup=on" 
    onclick="open_window(this.href, '500' , '500'); return false;"> ... 
0

這裏是一個辦法讓你的蛋糕,吃它也 我沒有測試它在所有的瀏覽器,但它應該工作

function open_window(url,target,w,h) { //opens new window 
    var parms = "width="+w+",height="+h+",menubar=no,location=no,resizable,scrollbars,top=500,left=500"; 
    var win = window.open(url,target,parms); 
    if (win) { 
    win.focus(); 
    return false; // cancel the onClick 
    } 
    return true; // make the link perform as normal 
} 

使用鏈接

<a href="?module=cart&task=add&id=<?=$res[xproductid]?>&popup=on" 
target="newWin" 
onclick="return open_window(this.href,this.target,500,500)" 
id="addtocard"><img src="../images/new_theme/buy_book.gif" width="123" border="0"/></a> 

甚至節省你愚蠢的光標的事情,因爲它是一個實際的鏈接,即使當關閉JS的工作