簡體   English   中英

如何使用Greasemonkey在iframe的父級中調用函數

[英]How can I call a function in an iframe's parent using Greasemonkey

我有一個Greasemonkey腳本,可以將iframe添加到頁面中(稱為第1頁)。 iframe包含另一個頁面(稱為第2頁)。 該腳本也在第2頁上運行。 頁1和2在不同的域上。

我想允許在第2頁中運行的代碼在第1頁上調用一個函數。鑒於Greasemonkey代碼的限制較低,這可能嗎?

瀏覽器將阻止這種情況,因為域是不同的。

您可以使用一些技巧在框架之間進行通信:

  1. 將另一個網站的DNS記錄添加到外部網站的域(www.somewebsite.com和someapp.somewebsite.com)。 然后在兩個頁面的JavaScript中都使用document.domain =“ somewebsite.com”
  2. 使用HTML 5 postMessage()在框架之間進行通信。 我知道它可以在Firefox 3和Internet Explorer 8中使用,但不能在IE7中使用。
  3. 您可以通過設置父窗口的URL將簡單消息傳遞到另一個頁面。 注意:似乎瀏覽器阻止設置父URL。 此方法僅適用於從父框架到子框架的單向通信。

廣告3:您將無法閱讀其他框架的URL,但可以對其進行設置。 如果將URL更改為完全相同的頁面,但URL帶有#anchor組件,則該頁面實際上不會重新加載:

window.frames["childFrame"].location.href = "http://www.somewebsite.com/#message"

然后,您需要向外部頁面添加腳本,以定期輪詢其location.href並處理消息。 是的,這很丑陋,但是如果操作正確,它將可以在所有常見的瀏覽器中使用。

暫無
暫無

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

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