2014-12-29 30 views
1

這個問題快把我逼瘋了,我有通過.asp頁,並在其中一個頁面引用的應用程序有一個JavaScript函數來打開一個彈出window.open爲什麼有些用戶的IE每次都打開新窗口。

window.open("popup.aspx", "myPopup","width=300,height=100,status=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,alwaysLowered=yes,location=no,directories=no,titlebar=no");

仰望它的各種文檔如果使用相同的窗口名稱,則該窗口將被重新使用。這在大多數用戶的IE上是正確的,但是在一些最終用戶PC上,即使使用相同的代碼,它也會打開一個額外的彈出窗口。

爲了驗證這一點,我創建了一個test.aspx,並簡單地複製了前面提到的open函數。在我的電腦上,我有一個彈出窗口,一些用戶有兩個。這絕對是這臺PC上的Internet Explorer,因爲我已經安裝了Firefox並且沒有問題,並且引用了相同的窗口。 IE(11)版本全部相同。

什麼問題?

+0

不是一個答案,你會發現,但IE是臭名昭著的與HTML走失標準。您的用戶看到重複的彈出窗口很可能在IE的舊版本(即6或7或更低版​​本)上。這些用戶是否在Windows XP上?如果是這樣,他們可以很容易地運行IE 6,但他們可以在XP上運行的最高版本IE是IE 8。 – ventaur

+0

用戶操作系統的麻煩是win7和IE(11.0.15)。我的環境是一樣的,但沒有問題。 – user3085427

+0

那麼,我的猜測是那些少數用戶在IE中有一個設置,大部分都沒有。在「Internet選項」>「選項卡」下,有一些關於始終在新窗口中打開的設置。他們可能會檢查該選項。 – ventaur

回答

0

保存打開的窗口中的一個全局變量的對象引用,並調用window.open之前做了驗證:

var windowObjRef = null; // global variable 

if(windowObjRef== null || windowObjRef.closed) 
{ 
    windowObjRef = window.open("popup.aspx", "myPopup","width=300,height=100,status=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,alwaysLowered=yes,location=no,directories=no,titlebar=no"); 
} 
else 
{ 
    windowObjRef.focus(); 
} 
+0

謝謝,但這個彈出窗口調用其他頁面,所以變量設置爲空。所以新打開相同的彈出。 – user3085427

相關問題