簡體   English   中英

javascript彈出問題在Internet Explorer中!

[英]javascript popup issue In Internet Explorer !

我有問題在javascript中打開彈出窗口我有這個功能在IE6和IE7中打開我的彈出窗口:

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(...)'為null不是對象。
你想在這個頁面上計算運行腳本嗎?

然后我在onclick事件中有按鈕它會調用一個函數關閉當前窗口刷新開啟功能

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

它也給了我錯誤:window.opener.location為null或不是對象,但我確定我傳遞了正確的參數

我稱之為:

第二部分:

<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>

這讓我很困惑。 請幫忙 ;)

當使用window.open打開的彈出窗口被彈出窗口阻止程序阻止時,這幾天是幾乎所有現代瀏覽器的一個特性,window.open()的返回值不是窗口對象,而是null。

為了避免這些問題,您需要在嘗試調用其上的任何方法之前測試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. Skinnable,因此您可以創建更一致的外觀以匹配您的網站。
  2. 沒有彈出窗口攔截器。
  3. 良好的API和文檔在大多數(如果不是全部)主流瀏覽器中都是一致的。

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

希望這可以幫助,

利奧爾。

這是一種讓你的蛋糕和吃它的方法我沒有在所有的瀏覽器上測試它,但它應該真的有用

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也可以工作

對我來說效果很好。 在IE6 / 7/8中測試過。

當然我無法使用您的URL測試它,所以我用簡單的文件名替換它們。 我建議你也嘗試使用簡單的文件名,看看它是否也失敗了。

除此之外...

您不需要在onclick屬性值的開頭添加“javascript:”。

如果您使用與open_window相同的URL向鏈接添加href =“...”屬性也會很好。 然后它將成為一個真正的鏈接,你不必添加光標:指向它的指針。 例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM