私はmanifest.jsonをからすべてのフレームに「messageListener.js」ファイルを注入してきた私(チャンドラThakkar)と私のチームリーダー氏ニティンMakwanaこのような状況のためのソリューションを持って、
初のテストを非常に多く行った後、 「のcontextMenu」リスナーの作成「messageListener.js」ファイルに続いて
"content_scripts": [
{
"matches": ["https://*/*","http://*/*"],
"css":["jquery-ui.css"],
"js": [
"jquery.js",
"jquery-ui.js",
"content_scripts/msg_listener.js"
],
"all_frames":true
}
などのファイルと私はのcontextMenu(右クリック)
などをクリックすると、背景のjsファイルにメッセージを送ります
ここでは、「[email protected]」は、メッセージを送信するWeb拡張のIDです。
そこで、今、私は「fileName.js」ファイルを注入してきた私のバックグラウンドのjsファイルでは、私は「clickedFrameID」という名前のグローバル変数を宣言しているし、同じファイル内に、私は
browser.runtime.onMessage.addListener(
function(msg, sender, callback) {
if(msg.type === 'onContextMenuClicked')
{
if(sender.hasOwnProperty("frameId")){
clickedFrameID=sender.frameId;
}else{
clickedFrameID="";
}
}
});
以下のようにonMessageリスナーが追加されました特定のフレームを下に表示
var clickedFrameID=""; //This is a Global Variable
browser.contextMenus.create({
"title": "Records",
"contexts": ["all","link"],
"id" : "M1",
"onclick": onClickContextMenu,
}, function() { });
function onClickContextMenu(info, tab){
var options={};
if(clickedFrameID !="" && clickedFrameID!=null &&
clickedFrameID!=undefined)
{
options={
file: "fileName.js",
allFrames: false,
frameId: clickedFrameID
};
}
browser.tabs.executeScript(tab.id,options, function() {
console.log("Script injected");
});
}
ここで、「fileName.js」が右クリックされた特定のフレームに挿入されます。
おかげで@wOxxOm、@MohammedAshrafali、@Makyenはい関心
を取るために、私は同じ問題に直面しています。解決策はありますか?あらかじめThanx。 "レコード"、 "コンテキスト":[ "すべて"、 "リンク"]、 "ID" 私はcontextMenusでやっている – MohammedAshrafali
申し訳ありませんが、先生これ、事はイベント browser.contextMenus.create({ "タイトル" をクリック: "M1"、 "onclick":onClickContextMenu、 }、function(){ }); onClickContextMenuは、この方法では、私はfileName.jsファイルを注入していますが、ここで私は私が「情報」と「タブ」オブジェクトを取得しますが、あなたの質問にその情報を指定すると –
@ChandrakantThakkarをiFrameIdおりませんここで、現在のiframe のフレームIDを取得しておりませんコメントだけではありません。あなたの質問は今すぐです**広すぎ** **閉鎖される可能性があります。 'ContextMenus'項目のクリックの結果としてこれが実行されていることを明確に述べる(そしてコードで表示したい)場合は、これを実行する方法で答えることができます。 – Makyen