3

DEEZER (www.deezer.com) で支払人を一時停止/再生する Google Chrome 拡張機能を作成しようとしています。Google chrome JavaScript コンソールでコード " playercontrol.doAction('next')" を手動で実行します。deezer プレーヤーを操作できます。そのため、拡張機能を使用してコードを Deezer Web ページに挿入する可能性を検討しましたが、うまくいきませんでした。 . Google Chrome のコンソールからのように、Deezer Web ページで JavaScript コードを実行することはできますか? もしそうなら、どのように?

4

1 に答える 1

6

ここで直面している問題は次のとおりです。

  1. バックグラウンド ページからコードを実行する代わりに、content_scripts を使用する必要があります。
  2. バックグラウンド ページから実行されるコードと、コンテンツ スクリプトとして実行されるコードは "サンドボックス化" されています。これは、ページによって作成されたグローバル変数にコードがアクセスできないことを意味します。あなたの拡張機能はそれにアクセスできません。良いニュースは、まだできるということです。ただし、賢くなければなりません。

拡張機能では、新しい Script タグをページの「ヘッド」に挿入する必要があります。新しいスクリプト タグを作成し、ページの先頭に追加する必要があります。追加する前に、script タグの「innerHTML」を実行する JavaScript に設定する必要があります。これがあなたがする必要があることの要点です。

var myJavaScript = "alert('hey guys');";    //You need to put your JS here. 
var scriptTag = document.createElement("script");
scriptTag.innerHTML = myJavaScript;
document.head.appendChild(scriptTag);

これにより、新しいスクリプト タグが head に配置され、Chrome 拡張機能のセキュリティがバイパスされます。これにより、新しいスクリプトがページ上の通常のグローバル変数にアクセスできるようになります。つまり、'playercontrol' オブジェクトにアクセスできるようになります。

于 2014-12-03T18:09:44.180 に答える