理由:
オーバーライドできますdocument.ondblclick
。問題は文脈です。chrome-extension context と page-context があります。

テストのために、次の拡張機能を追加できます。
document.ondblclick = function () {
alert("chrome extension ondblclick event");
}
イベントの両方のコンテキストを確認できます。

このイベントを起動すると、両方のイベントが呼び出されることがわかります。
解決:
必要なのはondblclick
、ページコンテキストでオーバーライドすることです。これを行うための非常に簡単な方法は、独自のスクリプトをページに追加することです。これにより、ページ コンテキストで実行されます。
スクリプトを挿入するには、次のように記述できますinject.js
。
(function(){
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.setAttribute('src', chrome.runtime.getURL('js/ownOndblclick.js'));
document.getElementsByTagName('head')[0].appendChild(scriptElement);
}());
そして、挿入する必要があるスクリプトが必要です。この場合、これはownOndblclick.js
次のとおりです。
document.ondblclick = function () {
alert("free");
}
alert はテスト用です。期待どおりに動作することを確認したら、削除してください。最後のステップは調整することmanifest.json
です:
{
...
"permissions": [
"http://whereever/*"
],
"content_scripts": [
{
"matches": ["http://whereever/*"],
"js": ["js/inject.js"]
}
],
"web_accessible_resources" : [
"js/ownOndblclick.js"
]
}
それでおしまい。
注入する代わりにownOndblclick.js
、直接入れることinject.js
です:
(function(){
var scriptElement = document.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.innerText = 'document.ondblclick = function () { alert("free");}';
document.getElementsByTagName('head')[0].appendChild(scriptElement);
}());
web_accessible_resources
その後、から削除できますmanifest.json
。