2013-01-06 68 views
3

我正在製作個人使用的greasemonkey腳本,但我需要它在iframe完成加載時執行一個函數。我嘗試了兩個獨立的腳本,一個在iframe中加載並執行函數,但函數未定義,因爲greasemonkey中的函數出於安全目的而處於其自己的環境中。使用greasemonkey執行iframe加載功能

無論如何要執行一個函數從一個存在於父母的greasemonkey中的iframe中? iframe的父

的Greasemonkey代碼:對於網站內部的iframe

frame2 = '[name="MainFrame"]'; 
function appendtoiframe2(){ 
    $(frame2).contentWindow.$('body').append('<div id="insecuremode_enable" style="position:fixed;bottom:0;background:#fff;">This div is now visible</div>'); 
}); 

的Greasemonkey代碼:

window.onload = function() { 
    parent.appendtoiframe2(); 
} 

謝謝。

編輯:我意識到這樣做可能很愚蠢,而不是讓腳本直接在網站上運行。但是我只希望在網站位於iframe中時執行此操作,但它並不總是處於這種狀態。我也試圖從iframe中控制父級內的元素。

+0

是在同一個域作爲父頁面的iframe? –

+0

是的,它在同一個域上。 –

回答

2

您可以將事件處理程序綁定到iframe加載。 (假設同一個域,否則沒有腳本訪問的iframe)

從頁面的主要部分:

$(function(){ 
    $('iframe[name="MainFrame"]').load(function(){ 
      $(this).contents().find('body').append('<div>.....</div>') 
     }); 
}); 

API參考:http://api.jquery.com/load-event/