2012-11-01 3 views
0

크롬 확장 내에서 localhost 서버에 게시하려고하는데 작동하지 않는 것 같습니다.크롬 확장에서 JQuery의 post 기능 사용

매니페스트 :

{ 
"name": "Send to server", 

"version": "1.1", 

"background": { "page": "background.html"}, 

"permissions": ["experimental", "tabs", "<all_urls>"], 

"browser_action": {"name": "Send to server", "default_icon": "icon.png", "default_popup":"popup.html" }, 

"icons": { "16": "16.png" }, 

"manifest_version": 2 

} 

background.html, 그것은 단지 http://ajax.googleapis.com/ajax/libs/jquery "에 아주 짧은 점 여기

내 파일입니다 /1.5/jquery.min.js " 및 "background.js ". 은 (난 그냥 JQuery와 포함 background.js에 그것을 사용할 수 있도록 사용하는 것이 또 다른 방법이 있나요.?)

background.js :

이제
chrome.tabs.onUpdated.addListener(SendToServer); 

function SendToServer(tabId, changeInfo, tab) { 
chrome.tabs.getSelected(null, function(tab) { 

    if (changeInfo.status === 'complete'){ 
     chrome.experimental.infobars.show({ 
       tabId: tab.id, 
       path: "infobar.html" 
      }); 

      var strVar = "A page was loaded"; 

      alert("Before sending: " + strVar); 

      $.post("http://localhost/MyDomain", {var: strVar}, 
       function(strVar) { alert("Sending..."); } 
      ); 
     } 
    }) 
}; 

, 경고 ("전송하기 전에 : "+ strVar); 수행되기 때문에 여기까지 잘 지냅니다. 그러나 포스트는 끝나지 않았다.

아이디어가 있으십니까?

감사의 말 :

답변

0

배경 페이지를 디버그하면 보안 오류가 있음을 알 수 있습니다. 매니페스트 파일에서 명시 적으로 허용하지 않은 상태에서 원격 소스 (ajax.googleapis.com)에서 자바 스크립트를로드하려고합니다. jQuery가 없으면 $.post을 실행할 수 없습니다. Content Security Policy 기본값을 풀어야합니다 (https를 통해 jQuery를로드해야합니다).

실제로이을 수행해야하는 경우 확장에 jQuery 파일을 포함시키고 이에 따라 backtround.html에로드해야합니다. 확장 프로그램은 웹 사이트가 아니기 때문에 원격 호출은 간단한 HDD 가져 오기와 비교할 때 많은 시간이 걸립니다. 또한 원격 자바 스크립트 파일을 사용하면 인터넷에 연결되어 있지 않을 때 확장 기능을 사용할 수 없거나 불안정해질 수 있습니다.

+0

필자는 두 번째 조언을 따르기를 권했고, 이는 분명히 권장되는 것으로서 작동합니다. 고맙습니다! – Subway

관련 문제