3

個人用のグリースモンキースクリプトを作成していますが、iframeの読み込みが完了したときに関数を実行するために必要です。2つの別々のスクリプトを作成してみました。1つはiframe内にロードして関数を実行しましたが、greasemonkey内の関数はセキュリティ上の目的で独自の環境にあるため、関数は定義されていません。

親のgreasemonkeyに存在するiframe内から関数を実行する方法はありますか?

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>');
});

iframe内のサイトのGreasemonkeyコード:

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

ありがとうございました。

編集:スクリプトをサイトで直接実行するのではなく、この方法で実行するのはばかげているかもしれないことに気づきました。ただし、これを実行するのは、サイトがiframe内にある場合のみです。これは、常に存在するわけではありません。また、iframe内から親内の要素を制御できるようにしようとしています。

4

1 に答える 1

2

iframeイベント ハンドラーをloadにバインドできます。(同じドメインを想定しています。それ以外の場合、iframe へのスクリプト アクセスはありません)

ページの主要部分から:

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

API リファレンス: http://api.jquery.com/load-event/

于 2013-01-06T01:06:25.233 に答える