前提・実現したいこと
javascriptもchrome extensionも初心者で、調べながら拡張機能を作っています。
chrome.runtime.onInstalled.addListenerでcheckboxタイプのメニューを一つ追加しました。
このメニューにチェックが入っているか入っていないかで処理を分けたいです。
発生している問題
そもそもどのようにしてcontext menuの要素にアクセスするかがわかりません。
該当のソースコード
background.js
javascript
1chrome.runtime.onInstalled.addListener(function () { 2 const check1 = chrome.contextMenus.create({ 3 title: "checkbox", 4 type: "checkbox", 5 id: "checkbox1", 6 contexts: ["all"], 7 checked:true 8 }); 9});
試したこと
アクセス方法がわからなかったため、関数外に変数を用意し作成したメニューがクリックされたらその変数にチェックボックスの状態を入れていました。
javascript
1var flag = true; 2 3chrome.contextMenus.onClicked.addListener(function (item) { 4 if (item.checked == true){ 5 flag = true 6 } else { 7 flag = false 8 } 9});
この場合、
①拡張機能読み込み(この時点ではchecked:trueによりtrue。flagも初期化でtrue。メニューにもチェックが入っている)
②メニューをクリック(イベント発生でitem.checkedがfalse、flagもfalse。メニューのチェックは外れる)
~ここまでは期待通りの動作~
③Chromeを再起動(メニューはチェックが外れたまま。flagは初期化されるためtrue。ここでずれが発生してしまう)
④flagの値で分岐させた処理を行う(flagの値を見ているのでチェックが外れているのにtrueとして処理が進んでしまう)
という感じで途中から動作が期待通りになりません。
回答1件
あなたの回答
tips
プレビュー