0

開いた各タブで JQuery ダイアログ ボックスを開く単純なクロム拡張機能があります
。問題は、Web ページに iframe が含まれている場合、ダイアログ ボックスがページ内にある iframe の数だけ開くことです。
これを避けたいのですが、開く必要があるのは、ページごとにダイアログ ボックスの 1 つのインスタンスだけです。ページ内の iframe を回避するにはどうすればよいですか?
これは私のコンテンツスクリプトです:

var layerNode= document.createElement('div');
    layerNode.setAttribute('id','dialog');
    layerNode.setAttribute('title','Basic dialog');
var pNode= document.createElement('p');
    console.log("msg var: "+massage); 
    pNode.innerHTML  = massage;

layerNode.appendChild(pNode);
document.body.appendChild(layerNode);

jQuery("#dialog").dialog({
    autoOpen: true, 
    draggable: true,
    resizable: true,
    height: 'auto',
    width: 500,
    zIndex:3999,
    modal: false,
    open: function(event, ui) {
        $(event.target).parent().css('position','fixed');
        $(event.target).parent().css('top', '5px');
        $(event.target).parent().css('left', '10px');
    }

});
4

2 に答える 2

2

これをすべてラップするのはどうですか

if(window==window.top) {
   // we're not in an iframe
   // your code goes here
}
于 2012-12-06T09:59:19.010 に答える
0

PAEz がコメントで述べたように、コンテンツ スクリプトはデフォルトでトップ フレームでのみ実行されます。それらをサブフレームで実行するには、マニフェストの content_scripts セクションに'"all_frames":true' が必要です。同様に、tabs.executeScriptを使用してスクリプトを挿入する場合は、 InjectDetails引数に '"allFrames":true' を含める必要があります。

于 2012-12-07T00:55:32.853 に答える