1

Grooveshark Javascript APIを使用してGroovesharkで曲を再生する手順をローカルホストサーバーに接続するクロム拡張を作成したいとします。 (http://grooveshark.com/GroovesharkAPI.html)Groovesharkで曲を再生するChrome拡張機能

たとえば、私はJavaScriptコンソールでwindow.Grooveshark.addSongsByID([13963],true)を入力した場合、それは曲を追加しますと、それは私がこれを行うことができるようにする必要がある必要があるように再生を開始内線から。だから、開始するには、私は、コマンドを実行するために背景ページと拡張し、ちょうどこの単一のスクリプトを作りたかった:

background.html

background.js

chrome.browserAction.onClicked.addListener(function(tab) { 
chrome.tabs.executeScript(
    null, {code:"window.Grooveshark.addSongsByID([13963],true)"}); 
}); 

マニフェスト.json

{ 
    "name": "Play song in Grooveshark", 
    "version": "0.1.0", 
    "background_page": "background.html", 
    "permissions": [ 
    "tabs", "http://*/*" 
    ], 
    "browser_action": { 
    "name": "Play song", 
    "default_icon": "icon.png" 
    } 
} 

誰も私にそれがなぜ動作しないのか教えてもらえますか?

ありがとうございます!

+1

私は100%確実ではないんだけど、それはそれはそこに実際にはありません、あなたのマニフェスト – JaredMcAteer

+0

おっとの末尾にカンマである可能性があります。しかし、それを指摘してくれてありがとう。 – Trevor

+0

拡張ボタンを右クリックして、下のオプション "show popup"または同様のものを選択することができます。あなたの内線からエラーを出力するコンソールを持っています。 – Lycha

答えて

1

コンテンツスクリプトは、親ページのwindowオブジェクトにアクセスできません。あなたのコードでページに<script>タグを注入する必要があります。

//bg page 
chrome.tabs.executeScript(null, { 
    code: "injectJs('window.Grooveshark.addSongsByID([13963],true)')" 
}); 

//content script 
function injectJs(code) { 
     var scr = document.createElement("script"); 
     scr.type = "text/javascript"; 
     scr.text = code; 
     (document.head || document.body || document.documentElement).appendChild(scr); 
} 

あなたはすべてのページにマニフェストを通じてinjectJs機能を注入した後、必要なときにそれを呼び出すことができます。

+0

Nice!ありがとうございました。だから私はcontentScript.jsというファイルに関数を持っていて、 '" content_scripts "を追加しました:[ { " js ":[" contentScript.js "]、 は"一致 ":[" http:// * .groovshark.com/* "] } ]"マニフェストには、 "Uncaught ReferenceError:injectJsが定義されていません"と表示されます。私は何が欠けていますか? – Trevor

+0

実際に、そのスクリプトをbackground.htmlに追加すると、エラーは出ませんが、どちらも動作しません。=( – Trevor

+0

@Trevor bgページからスクリプトを呼び出すときに、まだ読み込まれていないのですか?コンテンツスクリプトが完全に読み込まれたページの後に呼び出す必要があります。 – serg

0

これをほぼ透明にするためのラッパーを作成しました。スクリプト注入ソリューションでは、このプロキシが機能している間は、関数から戻り値を取得することもできません。

コンテンツスクリプトにこれを含め、window.Groovesharkの代わりにGroovesharkProxyのメソッドを呼び出します。

https://github.com/msfeldstein/Grooveshark-Chrome-Extension-Proxy

http://www.macromeez.com/use-groovesharks-js-api-from-a-chrome-extension/

+0

ああ、すばらしい!ありがとう! – Trevor

+0

リンクが壊れています。 –

関連する問題