1

私は現在、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');});
4

1 に答える 1

0

誰かがこれに出くわした場合に備えて: 現在、JavaScript が無効になっている間、contentScript の関数を実行し続ける方法はありません。おそらく、この機能は実装されることはありませんが、誰にもわかりません。DOM 操作はまだ可能ですが、いくつかのコードを実行することはできます。そのため、挿入したいメニューがまだ表示されていました。

于 2013-06-13T13:48:02.353 に答える