Расширение Chrome для воспроизведения песен в Grooveshark - PullRequest
1 голос
/ 03 ноября 2011

Я хочу создать расширение Chrome, которое будет подключаться к локальному серверу для получения инструкций по воспроизведению песен в Grooveshark с помощью API-интерфейса Grooveshark Javascript.(http://grooveshark.com/GroovesharkAPI.html)

Например, если я наберу window.Grooveshark.addSongsByID([13963],true) в консоли javascript, он добавит песню и начнет играть так, как мне нужно, чтобы я мог сделать это из расширения. Поэтому для начала япросто хотел сделать расширение с фоновой страницей и просто этот единственный скрипт для выполнения команды:

background.html

<!doctype html>
<html>
    <head>
        <script src="background.js"></script>
    </head>
    <body>
    </body>
</html>

background.js

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

manifest.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"
  }
}

Может кто-нибудь сказать мне, почему это не работает?

Спасибо большоемного !! * * 1023

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Сценарии содержимого не могут получить доступ к объекту 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 голосов
/ 10 февраля 2012

Я написал оболочку, чтобы сделать это почти прозрачным.Решение для внедрения скриптов также не позволяет вам получать какие-либо возвращаемые значения из функций, в то время как этот прокси-сервер делает это.

Включите это в ваш скрипт контента и вызывайте методы в GroovesharkProxy вместо window.Grooveshark.

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

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

...