私は現在、Google Chrome拡張機能をいじり始めました。私の拡張機能は現在、すべての Web サイトにいくつかの JavaScript を挿入し、いくつかの機能を備えたサイドバーを作成します (ただし、どの機能が実際に問題になるわけではありません)。これらの Web サイトで JavaScript が有効になっている間はすべて機能しますが、ブロックされると機能しなくなります。chrome.tabs.executeScript を介してコードを挿入すると、(サイドバーが作成されるため) すべてのページの起動時に明らかに読み込まれますが、現時点では単純な div にすぎません (前述したように、どの関数も機能し続けません)。前にタグを挿入しようとしましたが、javascript がブロックされているときは何もしません (サイドバーは作成されません)。明らかに違いがありますが、どちらもうまくいきません。
contentScripts がどのように機能するかを理解している限り、それらは隔離された世界で実行する必要があるため、サイトの JavaScript オプションの影響を受けるべきではありません (拡張機能の他のすべての部分 (背景ページなど) は引き続き機能します)。Web で回答を検索しましたが、この問題について何も見つかりませんでした (適切に回答されずに閉じられたバグレポートが 1 つ見つかりました)。サイトの JavaScript がブロックされている間 (特別なアクセス許可など)、挿入されたコードを実行し続ける方法を知っている人はいますか? 前もって感謝します!
EditII: その間、いくつかのコンテンツ スクリプトをテストしましたが、JavaScript がオフになっていても一部のスクリプトは引き続き動作します。最初に述べたように、スクリプトも最初は実行されますが、その機能は維持されません。何が起こっているべきかの本当にスリムなバージョンをよりよく理解するために。これらの機能を実行し続ける方法はありますか、それともサイトの奥深くに挿入されているために絶望的ですか?
マニフェスト.json
{
"name" : "Example",
"version" : "1.0.1",
"description" : "Creates a sidebar, which looses dragable() function when javascript is turned off",
"permissions" : [ "tabs" ],
"content_scripts" : [
{
"matches" : [ "http://*/*" ],
"js" : [ "jquery.js", "jquery-ui.js", "contentscript.js" ],
"run_at" : "document_end",
"all_frames" : true
}
],
"manifest_version": 2
}
コンテンツスクリプト:
var sidebar;
sidebar = $("<div id='example_sidebar'></div>");
sidebar.css({
'position': 'fixed',
'right': '0px',
'top': '200px',
'z-index': 9999,
'width': '70px',
'height': '140px',
'background-color': 'blue' // Confirm it shows up
});
$('body').append(sidebar);
$(function() {
$( "#example_sidebar" ).draggable();
});
$("#example_sidebar")
.on( "mouseenter", function() {
console.log('entered the div');
})
.on( "mouseleave", function() {
console.log('left the div');
});
$('#example_sidebar').on('click', function() {
console.log('clicked the div');});