私はGoogleChromeの拡張機能に取り組んでいます。これにより、ユーザーはオンライン製品のサポートチケットを現在のページから直接送信できます。
私はページルールを使用して、拡張機能を製品ページのみに制限してきました。一部のユーザーは、ポップアップが機能しなくなったときに問題が発生しています。
これは、一部のユーザーが当社の製品ページの1つであるときに表示されるものです。また、ユーザーがこれを見ると、拡張機能アイコンはフルカラーになっています。それが有用な情報であるかどうかはわかりません。
問題の再現に問題があります。私たちのユーザーのほとんどはリモートメイキングであり、診断が困難です。
問題を再現するために、Chromeを強制終了して再度開くようにしました。また、コンピュータを再起動しても再作成されませんでした。
拡張機能を削除して再インストールすると問題が解決するようです。
これは、拡張機能を有効/無効にするために使用しているコードです。
const PAGE_RULE = [{
id: 'DISPLAY_RULE_SS',
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {hostSuffix: '.localhost.com', pathPrefix: '/app/'},
}),
],
actions: [new chrome.declarativeContent.ShowPageAction()],
},]
chrome.runtime.onInstalled.addListener(function() {
chrome.tabs.onActivated.addListener((activeInfo) => {
chrome.declarativeContent.onPageChanged.getRules(['DISPLAY_RULE_SS'], (rules) => {
if(rules.length !== 0){
return;
}
chrome.declarativeContent.onPageChanged.addRules(PAGE_RULE);
});
});
});
これが私のマニフェストです。
{
"name" : "Support App",
"version" : "0.0.3",
"description" : "Fill in a brief description of your issue, along with a few details, and our support team will be notified immediately.",
"manifest_version" : 2,
"icons": {
"128" : "./img/murmuration_square_transparent.png"
},
"background" : {
"scripts" : ["./backgrounds/default_background.js"],
"persistent" : false
},
"permissions" : [
"history",
"tabs",
"declarativeContent",
"activeTab",
"https://*.localhost.com/*",
],
"page_action" : {
"default_icon" : "./img/murmuration_square_transparent.png",
"default_popup" : "../default_interface.html"
},
"web_accessible_resources": [
"src/default_index.js"
]
}
この問題は、すべてのロジックが内部にあるという事実に関連していると思われますchrome.runtime.onInstalled.addListener(function() {...}
が、よくわかりません。
どんな助けでも大歓迎です。
ダウンタイムが発生した後、これに戻り、Googleのドキュメントで解決策を見つけました。上のドキュメントこのページの状態
リスナーは、ページの最初から同期的に登録する必要があります。
これは、ページルールを設定するときに私が行っていたこととまったく同じです。
私もこのページでそれを見つけました
ルールはブラウジングセッション間で永続的です。したがって、runtime.onInstalledイベントを使用して、拡張機能のインストール時にルールをインストールする必要があります。このイベントは、拡張機能が更新されたときにもトリガーされることに注意してください。したがって、最初に以前にインストールしたルールをクリアしてから、新しいルールを登録する必要があります。
そこで、バックグラウンドスクリプトを更新して、次のスクリプトを実行しました
chrome.runtime.onInstalled.addListener(details => {
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
chrome.declarativeContent.onPageChanged.addRules(PAGE_RULE);
});
});
これは、ドキュメントで推奨されているものです。これで、私たちが直面していた問題は解決したようです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加