1

나는 그걸 알아 듣지 만 그냥 작동하지 않는다고 생각합니다. 왜 그런지 알 수 없습니다.크롬 확장에서 팝업에서 배경으로 데이터가 전달되지 않습니다.

매니페스트 :

{ 
    "name": "Dummy Extension", 
    "description": "Dummy Extension Description", 
    "version": "2.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": false 
    }, 
    "browser_action": { 
    "default_title": "Dummy Extension", 
    "default_popup": "popup.html" 
    }, 
    "manifest_version": 2, 
    "content_scripts": [ { 
    "js": [ "jquery.min.js", "background.js" ], 
    "matches": [ "http://*/*", "https://*/*"] 
    }] 
} 

배경 :

chrome.extension.onMessage.addListener(function(request,sender,sendResponse) 
{ 
    if(request.greeting === "GetURL") 
    { 
     var tabURL = "Not set yet"; 
     chrome.tabs.query({active:true},function(tabs){ 
      if(tabs.length === 0) { 
       sendResponse({}); 
       return; 
      } 
      tabURL = tabs[0].url; 
      sendResponse({navURL:tabURL}); 
     });   
    } 
} 

Popup.html

<!DOCTYPE html> 
<head> 
<script src='popup.js'></script> 
<script src='jquery.min.js'></script> 
</head> 
<body> 
    Hello World! 
     <br /> 
    <input id="tabURL" type="text" /> 
     <br /> 
    <input value="SEND!" type="button" id="send" /> 
</body> 
</html> 

그리고 popup.js

function getURL() { 
    chrome.extension.sendMessage({greeting: "GetURL"}, 
     function (response) { 
      tabURL = response.navURL; 
      $("#tabURL").val(tabURL); 
     }); 
} 

$("#send").click(getURL()); 
,

나는 무엇이 잘못 됐는지 알아낼 수 없다. jquery가 정의되고 콘솔 오류가 발생하지 않는다. 도움이 될 것입니다!

답변

2

$("#send").click(getURL());은 DOM이 완전히 구성되고 실패하기 전에 실행됩니다. 또한 참조를 getURL에 전달하고 실행하지 않아야합니다.

를 해결하려면 : 그런데
$(document).ready(function(){ 
    $("#send").click(getURL); 
}); 

, 당신은 오류에 대한 잘못된 콘솔에보고 할 수있다. 팝업에 대해서는 this debugging tutorial을 참조하십시오.

+1

응답을 수정하고'click (getURL())'을'click (getURL)'으로 대체해야합니다. – devnull69

+0

@ devnull69 고마워요. – Xan

관련 문제