Chrome扩展弹出窗口无法工作,点击事件未被处理。

17 浏览
0 Comments

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)

0
0 Comments

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"属性的值正确指向包含正确代码的弹出窗口文件。

希望以上方法能够解决你的问题。

0
0 Comments

问题原因:代码违反了默认的内容安全策略(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或后台页面。

另外,去掉

标签。现在,当你点击按钮时,会提交表单导致页面重新加载。或者可以添加以下代码阻止表单提交并阻止页面重新加载:

document.forms[0].onsubmit = function(e){e.preventDefault();};

以上就是解决Chrome扩展弹出窗口无法工作、点击事件无法处理的问题的原因和解决方法。

0