Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chrome扩展-onClick函数中的javascript仅在调试时起作用_Javascript_Google Chrome Extension - Fatal编程技术网

Chrome扩展-onClick函数中的javascript仅在调试时起作用

Chrome扩展-onClick函数中的javascript仅在调试时起作用,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在创建一个Chrome扩展,单击扩展图标将向用户显示一个按钮,单击该按钮将打开一个新选项卡,该选项卡将显示从原始页面传递给它的参数。奇怪的是,如果我调试它(即,右键单击扩展图标并单击“检查弹出窗口”),它将工作,但如果我不调试,单击按钮时它将显示一个空白页 manifest.json { "name": "test name", "version" : "0.1", "description": "test description", "bro

我正在创建一个Chrome扩展,单击扩展图标将向用户显示一个按钮,单击该按钮将打开一个新选项卡,该选项卡将显示从原始页面传递给它的参数。奇怪的是,如果我调试它(即,右键单击扩展图标并单击“检查弹出窗口”),它将工作,但如果我不调试,单击按钮时它将显示一个空白页

manifest.json

{  
    "name": "test name",  
    "version" : "0.1",  
    "description": "test description",  
    "browser_action":  
    {  
        "default_icon": "icon_128.png",  
        "popup": "test.html"  
    },  
    "permissions": [  
        "tabs", "http://*/*", "https://*/*"  
    ]  
}  
test.html

<HTML>  
<BODY>  
<script type="text/javascript">  
var currentWindowID = -1;  

window.onload = function(e){   
    chrome.windows.getCurrent(function(w)  
    {  
        currentWindowID = w.id;  
    });  
}  

function openNextPage(){  
    console.log("in openNextPage");  
    chrome.tabs.create(  
        {url: "test2.html"},   
        function(tab)  
        {             
            chrome.tabs.sendRequest(tab.id, {someParam: currentWindowID});  
        }  
    );  
    console.log("exiting openNextPage");  
}  
</script>  
<input type="button" value="Show next page" onClick="openNextPage()">  
</BODY>  
</HTML>  
<HTML>  
<BODY>  
<script type="text/javascript">  
var currentWindowID = -1;  

window.onload = function(e){   
  chrome.windows.getCurrent(function(w)  
  {  
      currentWindowID = w.id;  
  });  
}  

function openNextPage() {  
  var bg = chrome.extension.getBackgroundPage();
  bg.openNextPage(currentWindowID);
}  
</script>  
<input type="button" value="Show next page" onClick="openNextPage()">  
</BODY>  
</HTML>

var currentWindowID=-1;
window.onload=函数(e){
chrome.windows.getCurrent(函数(w)
{  
currentWindowID=w.id;
});  
}  
函数openNextPage(){
console.log(“在openNextPage中”);
chrome.tabs.create(
{url:“test2.html”},
功能(选项卡)
{             
sendRequest(tab.id,{someParam:currentWindowID});
}  
);  
console.log(“退出openNextPage”);
}  
test2.html

<HTML>  
<script type="text/javascript">  
    chrome.extension.onRequest.addListener(function(request)  
    {  
        document.write("<h1>test</h1>");  
        document.write("<h2>value=" + request.someParam + "</h2>");  
    });  
</script>  
</HTML>  

chrome.extension.onRequest.addListener(函数(请求)
{  
文件。编写(“测试”);
document.write(“value=“+request.someParam+”);
});  

创建新选项卡时,浏览器将激活该选项卡,您的弹出窗口将关闭。因此,永远不会从
chrome.tabs.create
调用回调。对于这样的代码,背景页是一个更合适的位置

test.html

<HTML>  
<BODY>  
<script type="text/javascript">  
var currentWindowID = -1;  

window.onload = function(e){   
    chrome.windows.getCurrent(function(w)  
    {  
        currentWindowID = w.id;  
    });  
}  

function openNextPage(){  
    console.log("in openNextPage");  
    chrome.tabs.create(  
        {url: "test2.html"},   
        function(tab)  
        {             
            chrome.tabs.sendRequest(tab.id, {someParam: currentWindowID});  
        }  
    );  
    console.log("exiting openNextPage");  
}  
</script>  
<input type="button" value="Show next page" onClick="openNextPage()">  
</BODY>  
</HTML>  
<HTML>  
<BODY>  
<script type="text/javascript">  
var currentWindowID = -1;  

window.onload = function(e){   
  chrome.windows.getCurrent(function(w)  
  {  
      currentWindowID = w.id;  
  });  
}  

function openNextPage() {  
  var bg = chrome.extension.getBackgroundPage();
  bg.openNextPage(currentWindowID);
}  
</script>  
<input type="button" value="Show next page" onClick="openNextPage()">  
</BODY>  
</HTML>

var currentWindowID=-1;
window.onload=函数(e){
chrome.windows.getCurrent(函数(w)
{  
currentWindowID=w.id;
});  
}  
函数openNextPage(){
var bg=chrome.extension.getBackgroundPage();
bg.openNextPage(当前窗口ID);
}  
background.html

<HTML>  
<BODY>  
<script type="text/javascript">  
function openNextPage(currentWindowID) {  
  console.log("in openNextPage");  
  chrome.tabs.create(  
    {url: "test2.html"},   
    function(tab)  
    {             
        chrome.tabs.sendRequest(tab.id, {someParam: currentWindowID})
    }  
  );  
  console.log("exiting openNextPage");  
}
</script>  
</BODY>  
</HTML>

函数openNextPage(currentWindowID){
console.log(“在openNextPage中”);
chrome.tabs.create(
{url:“test2.html”},
功能(选项卡)
{             
chrome.tabs.sendRequest(tab.id,{someParam:currentWindowID})
}  
);  
console.log(“退出openNextPage”);
}

是的,这很有效!非常感谢。注意:对于其他人,您需要将这一行添加到manifest.json文件:“background_page”:“background.html”,