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