2010-03-15 142 views
2

這就是情況。我正在嘗試提供一項服務,在該服務中,某人在其網站上嵌入了一個帶有表單的iframe。最後當ajax請求再次進入時,我想彈出一個新窗口,其中包含一個感謝信。 window.open不起作用,我的猜測是因爲窗口對象屬於嵌入它的頁面而不是iframe,然後被認爲是跨站點腳本。有沒有另外一種方法呢?從iframe打開窗口

我的一個想法是,我可以在iframe中創建與target =「_ new」的鏈接,然後單擊它實際上會彈出另一個窗口。也許我可以創建這個鏈接,並點擊/觸發它與JavaScript?

我確實可以控制用戶嵌入的內容,因此我可能會在其中包含腳本,但代碼越少,顯然就越好。

任何需要?

+1

您可能被彈出式窗口攔截器阻止。 – SLaks 2010-03-15 20:02:28

+0

IIRC彈出窗口被阻止,因爲它是由XHR onreadystatechange事件觸發的,而不是由用戶觸發的事件觸發的。瀏覽器旨在阻止彈出窗口出現,而不是用戶觸發。 – Quentin 2010-03-15 20:03:23

回答

7

window.open不工作,我的猜測是因爲窗口對象屬於嵌入它

我不這麼認爲的頁面。 window正如您的腳本所看到的,通常是iframe中文檔的window對象。

更典型的是,XMLHttpRequest完成時的window.open將被瀏覽器的內置彈出窗口攔截器阻止。它們通常只允許直接響應用戶交互來打開新窗口(通常,在onclick事件處理程序中)。

也許我可以創建此鏈接並點擊/觸發它的JavaScript?

不,否則每個人都會這樣做來規避阻滯劑!

如果您開始XHR並且您知道將來需要彈出窗口,您現在必須打開窗口並添加一些填充內容,直到XHR返回,此時您可以更新其內容。