2011-03-20 56 views
2

クロムエクステンションを作成しましたが、httpsサイトでは機能しません。現在、ページにスクリプトを挿入する背景ページです。それはjqueryといくつかのライブラリも実行します。これまでに私が見つけた唯一の方法は、背景ページを実行し、chrome.tabs.executescriptを使うことです。もし誰かがより良い方法を知っていれば、それも助けになるでしょう。安全なサイトでクロムエクステンションが動作しないhttps

httpとhttpsサイトへのアクセス許可を追加しましたので、これで十分です。誰かが助けてくれて、ありがとう。

マニフェスト:私は私のコーディングを行う場所

<script type="text/javascript"> 

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) 
{ 
    if(changeInfo.status == "loading") 
    { 
     chrome.tabs.insertCSS(null, { file: "jquery-ui-1.8.10.custom.css" }, null); 
     chrome.tabs.executeScript(null, { file: "jquery.min.js" }, null); 
     chrome.tabs.executeScript(null, { file: "jquery-ui-1.8.10.custom.min.js" }, null); 
     chrome.tabs.executeScript(null, { file: "jquery.hotkeys-0.7.9.min.js" }, null); 
     chrome.tabs.executeScript(null, { file: "custom.js" }, null); 
    } 
}) 

</script> 

ファイルcustom.js

{ 
    "name": "My First Extension", 
    "version": "1.0", 
    "description": "The first extension that I made.", 
    "background_page": "popup.html", 
    "permissions": ["tabs", "http://*/*", "https://*/*"] 
} 

popup.htmlです。

おかげ

+0

私はGoogleがこれを行うことを制限していると思います。 – Blender

答えて

3

manifest.jsonをする "conent_scripts" を追加してみてください:

"content_scripts": [ 
    { 
      "matches": ["http://*/*", "https://*/*"], 
      "css": ["empty.css"] 
    }] 

あなたは 'CSS' または 'ファイル' を指定する必要があります。私のアドオンでは、スクリプトは動的にロードされるので、ダミーのCSSファイルを使用するだけです。

も参照してください:http://code.google.com/chrome/extensions/content_scripts.html

+1

私はそれを試みました、悲しいことに、それは動作しません。おそらく、Blenderが正しく、おそらくGoogleがhttpsサイトでの実行を制限しているかもしれません。 私が書いていた拡張機能は、ホットキーでcrtl +と言うポップアップなので、残念ですが?あなたが新しいURLを入力してEnterキーを押すとポップアップが表示され、ページがそのサイトに変更されます。これは安全でないサイトでも機能します。フルスクリーン(F11)をすると本当に役に立ちます。私が終わったときに出版したいと思っていました。 – JML

+0

私はポップアップを調べて、コンソールで 'chrome.tabs.executeScript(null、{code:" alert(document.title); "}、null)'を実行しました。それはhttpsサイトに対して働きました。あなたはデバッガのウィンドウからそれを実行しようとしましたか?例外メッセージはほとんどの場合役に立ちます。 – paztulio

+1

私の拡張機能でもう一度テストしました。私は簡単なスクリプトを挿入できるようです。私。 'debugger;'が働いた。しかし、より複雑なスクリプト(jquery、jquery-ui、およびpopupダイアログを表示するcustom.js)を挿入すると、静かに失敗します。エラーはありませんが、何も起こりません。 – paztulio

1

はたぶん、依存関係に問題があります。 executeScriptの呼び出しはすべて非同期です。したがって、jqueryホットキーの注入を開始するときに、jqueryが注入されていると仮定することはできません。

var runScripts = function(tabId, scripts, cb) { 
     var current = scripts.shift(); 
     if (current) { 
      chrome.tabs.executeScript(tabId, {file: current}, function(a) { 
       console.log("Finished running script:", current); 
       runScripts(tabId, scripts, cb); 
      }); 
     } else { 
      cb(); 
     } 
    }; 

chrome.tabs.insertCSS(null, {file: "jquery-ui-1.8.10.custom.css"}, function() { 
    runScripts(null, ["jquery.min.js", "jquery-ui-1.8.10.custom.min.js", "jquery.hotkeys-0.7.9.min.js", "custom.js"], function() {}); 
}); 
+0

私はそれをまだ試していませんが、答えは、サイトが複雑で、その中にフレームセットがあるという前に言及したものだと思います。私の拡張機能はhttpsで動作します。そのGoogleメールにはサイト内にフレームがあります。 – JML

+0

そう思った。 jquery-hotkeys-plugin/custom.jsがフレームセットで動作しないと仮定します。私はいつもそれらを避けようとしたので、私はフレームに精通していないと認めなければなりません。 とにかく、$( "body")の各フレームinstadにハンドラを追加する必要があると思います。 – paztulio

関連する問題