2013-02-26 4 views
0

last.fm & plug.dj API를 사용하여 크롬 확장 프로그램을 만들려고합니다. 확장 프로그램에 스크립트를 포함시키기 전까지는 작동하지 않았기 때문에 연결할 수 없습니다. 그들 모두에게. 는 I 다른 API에 액세스 스크립트에서 다른 곳에서 새로운 LastFMCache에확장 프로그램이 클래스를 찾을 수 없습니다.

{ 
    "content_scripts": [ { 
     "js": [ "jquery.js","lastfm.api.md5.js", "lastfm.api.cache.js", "lastfm.api.js","lastFMLink.js", "script.js"], 
     "css": [ "LastFMLink.css" ], 
     "matches": [ "http://plug.dj/*", "http://plug.dj/*/*" ], 
     "run_at": "document_end" 
    } ], 

    "name": "Plug.Dj VS last.Fm", 
    "description": "Implement information about the artist", 
    "icons": { "16": "cookie.png", "48": "cookie.png", "128": "cookie.png" }, 
    "permissions": [ "http://plug.dj/*", "http://plug.dj/*/*" ], 
    "version": "0.0.1", 
    "web_accessible_resources": [ "lastFMLink.js"], 
    "manifest_version": 2 
} 

그 오류를 내의 manifest.json에 다음()과와

function Setup(){ 
    console.log('Setup'); 
    API.addEventListener(API.DJ_ADVANCE, callback); 
    cache = new LastFMCache(); 
    lastfm = new LastFM({ 
     apiKey: '<key>', 
     apiSecret: '<secret>', 
     cache: cache 
    }); 
} 

:이 설정 스크립트입니다. 다른 스크립트 (lastFMLink.js 및 lastFMLink.css와 같은)가로드되고 weir 것은 이벤트 리스너입니다.

버튼을 누르면 설치 스크립트 get이로드되고 아직 초기화되지 않았으므로 일반적으로 스크립트 순서 때문에 오류가 발생하지 않습니다.

누군가가 잘못 될 수있는 단서가 있습니까?

답변

0

아마도 이것이 최선의 선택은 아니지만, 작동하지 않는 이유는 content_script가 백그라운드에서 실행되고 서로에 대한 액세스 권한이 없기 때문입니다.

그래서 나는 내 manifest.json을 변경 :

{ 
    "content_scripts": [ { 
     "js": ["script.js"], 
     "css": [ "LastFMLink.css" ], 
     "matches": [ "http://plug.dj/*", "http://plug.dj/*/*" ], 
     "run_at": "document_end" 
    } ], 

    "name": "Plug.Dj VS last.Fm", 
    "description": "Implement information about the artist", 
    "icons": { "16": "cookie.png", "48": "cookie.png", "128": "cookie.png" }, 
    "permissions": [ "http://plug.dj/*", "http://plug.dj/*/*" ], 
    "version": "0.0.1", 
    "web_accessible_resources": [ "jquery.js","lastfm.api.md5.js", "lastfm.api.cache.js", "lastfm.api.js","lastFMLink.js","script.js"], 
    "manifest_version": 2 
} 

하고 난 단지 스크립트를로드했고, 내가 그것을 할 수있는 방법이 아니다 deffenitly 확신하지만, 지금은 작동 ,하지만 이제는 내 last.fm 스크립트 (script.js)를로드하는 방법입니다.

var s = document.createElement('script'); 
s.src = chrome.extension.getURL("lastFMLink.js"); 
var s2 = document.createElement('script'); 
s2.src = chrome.extension.getURL("lastfm.api.md5.js"); 
var s3 = document.createElement('script'); 
s3.src = chrome.extension.getURL("lastfm.api.cache.js"); 
var s4 = document.createElement('script'); 
s4.src = chrome.extension.getURL("lastfm.api.js"); 

s.onload = function() { 
    this.parentNode.removeChild(this); 
}; 
(document.head||document.documentElement).appendChild(s); 
(document.head||document.documentElement).appendChild(s2); 
(document.head||document.documentElement).appendChild(s3); 
(document.head||document.documentElement).appendChild(s4); 
관련 문제