Chrome扩展弹出窗口无法工作,点击事件未被处理。
Chrome扩展弹出窗口无法工作,点击事件未被处理。
我已创建一个JavaScript变量,当我点击按钮时,它应该增加1,但这并没有发生。\n以下是`manifest.json`的内容。\n{\n \"name\":\"Facebook\",\n \"version\":\"1.0\",\n \"description\":\"我的Facebook个人资料\",\n \"manifest_version\":2,\n \"browser_action\":{\n \"default_icon\":\"google-plus-red-128.png\",\n \"default_popup\":\"hello.html\"\n }\n}\n
\n以下是HTML页面的代码\n
=a
\n我希望插件在我点击插件或按钮时显示变量a的值,并每次自动增加1。\n![插件的图片](https://i.stack.imgur.com/G0dMA.png)
Chrome扩展弹出窗口无法正常工作,点击事件无法处理的原因可能是onclick属性设置错误或count函数的定义问题。解决方法可以是修改onclick属性或更改count函数的实现方式。
代码示例中的onclick属性设置错误,应该修改为正确的语法:
onclick="count()"
或者修改count函数的实现方式,如下所示:
function count() { var demo = document.getElementById("demo"); var a = 0; return function() { demo.innerHTML = ++a; } }
可以尝试以下代码来解决问题:
window.onload = function () { var button = document.getElementById("the_button"); button.onclick = count(); function count() { var a = 0; var demo = document.getElementById("demo"); return function () { demo.innerHTML = ++a; } } }
这是一个完整的示例,假设你将id="the_button"
添加到你的按钮:
0
你可以在这里查看一个演示:http://jsfiddle.net/maniator/ck5Yz/
如果将代码修改为count,它将无法识别为函数count(),对吗?
还有一些带有增加和减少功能的示例:http://jsfiddle.net/maniator/ck5Yz/7
当我将代码更改后,它在作为HTML文件运行时可以正常工作,但在加载到Chrome扩展中并点击时却没有效果。
这可能是因为扩展的清单文件中的配置有问题。请检查清单文件中的代码是否正确配置了扩展的浏览器操作部分,并指定了正确的弹出窗口文件。例如:
{
"name":"Facebook",
"version":"1.0",
"description":"My Facebook Profile",
"manifest_version":2,
"browser_action":{
"default_icon":"google-plus-red-128.png",
"default_popup":"hello.html"
}
}
请确保清单文件中的"default_popup"属性的值正确指向包含正确代码的弹出窗口文件。
希望以上方法能够解决你的问题。
问题原因:代码违反了默认的内容安全策略(Content Security Policy),导致Chrome扩展弹出窗口无法工作,点击事件无法处理。
解决方法:将所有内联JavaScript代码从HTML文件中移除,并将其放入一个单独的JS文件中。
下面是解决方法的具体步骤:
1. 将以下代码保存为"hello.html"(弹出窗口页面):
=a
2. 将以下代码保存为"popup.js":
var a=0; function count() { a++; document.getElementById('demo').textContent = a; } document.getElementById('do-count').onclick = count;
请注意,我将innerHTML替换为textContent。在更复杂的应用程序中,使用textContent而不是innerHTML可以防止跨站脚本攻击(XSS)。
另外,当弹出窗口关闭时,页面会被卸载。如果要保存状态,需要将数据存储在某个地方,例如chrome.storage或后台页面。
另外,去掉