我打開一個模式彈出窗口。然後我使用window.opener
訪問父窗口文本框和其他屬性。它在Firefox中工作正常,但不在IE8中。它給出錯誤'window.opener爲空'。如何訪問在兩個瀏覽器中工作的子窗口中的父窗口屬性。window.opener替代品
19
A
回答
7
您可以將參數傳遞給showModalDialog函數。只需傳遞窗口對象作爲參數。
window.showModalDialog(theURL, window);
喲可以使用dialogArguments從模態窗口訪問參數。請參閱:http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
0
我會採取的方法是:
- 使用現有的JavaScript UI庫,因爲你不是第一人,曾經想這樣做,做不到這一點
- 創建一個名爲
OpenWindow
的函數,即瀏覽器嗅探window.opener
方法
例如:
if(window.opener == undefined) {
//probably not Firefox...
}
如果它發現它然後使用它,否則它測試IE變體並使用它。然後檢查Safari瀏覽器的版本,等等。
8
有兩種方法來解決這個問題: 注:「window.opener」不支持IE,如果使用了「的showModalDialog」。
1)替代 「window.showModalDialog」 的使用 「window.open」
2)如果您想使用 「window.showModalDialog」 然後執行以下操作:
<script language="javascript" type="text/javascript">
function YourFunction()
{
var opener = null;
if (window.dialogArguments) // Internet Explorer supports window.dialogArguments
{
opener = window.dialogArguments;
}
else // Firefox, Safari, Google Chrome and Opera supports window.opener
{
if (window.opener)
{
opener = window.opener;
}
}
// write you code and refer "opener"
window.close();
}
</script>
2
禁用Internet Explorer的「保護模式」,它禁止訪問此對象。
這樣做的步驟是:
- 按Alt + T以顯示工具菜單
- 點擊 「Internet選項」
- 選擇 「安全」 選項卡
- 確保區域選擇含有您的網站。對於Intranet站點,通常是「本地Intranet」區域。
- 取消「啓用保護模式」
- 關閉所有IE選項卡和窗口並重新打開。
現在你應該可以訪問window.opener對象。
0
作爲一個跨瀏覽器的選擇,你可以在你打開它給出一個自定義屬性的新窗口:
var popup = window.open(...);
popup.isPopup = true;
然後,在被稱爲頁:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
相關問題
- 1. 替代window.opener
- 2. Window.opener替代時不開放
- 3. QI4J替代品
- 4. PRISM替代品
- 5. Nabaztag替代品?
- 6. Sharepoint替代品?
- 7. OPENDATASOURCE替代品
- 8. JML替代品
- 9. XAML替代品
- 10. NAnt替代品
- 11. Kibana替代品
- 12. @「」的替代品?
- 13. ASIHTTP的最佳替代品,替代品或替代品用於下載隊列
- 14. eval()的替代品
- 15. SRSPlus的替代品?
- 16. SharePoint的替代品?
- 17. 替代品刪除?
- 18. NHIbernate的替代品?
- 19. KeyboardAvoidingView或替代品
- 20. Essbase的替代品
- 21. CKAN的替代品
- 22. Flash的替代品?
- 23. Portlets的替代品
- 24. java.util.concurrent.ConcurrentSkipListSet的替代品
- 25. 尋呼替代品
- 26. SwaggerHub的替代品
- 27. YQL的替代品
- 28. QC的替代品
- 29. GWT Acegi替代品
- 30. WebSockets的替代品
你試過window.parent.opener? – 2011-02-03 11:52:34
我嘗試了window.parent.opener,但我無法訪問父文檔對象。我將parent.document作爲參數傳遞,並在popup中訪問parent.document作爲window.dialogArguments.parentDocumentObj,其中parentDocumentObj是包含文檔的變量的名稱。 – dmay 2011-02-16 12:04:23