You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展Manifest V3中oninput内联事件触发CSP错误求助

Chrome扩展Manifest V3内联oninput事件触发CSP错误解决方案

翻译后的错误信息

拒绝执行内联事件处理器,因为它违反了以下内容安全策略指令:"script-src 'self'"。要启用内联执行,需要使用'unsafe-inline'关键字、哈希值('sha256-...')或随机数('nonce-...')。请注意,除非存在'unsafe-hashes'关键字,否则哈希值不适用于事件处理器、样式属性和javascript:导航。
popup.html:67 拒绝执行内联事件处理器,因为它违反了以下内容安全策略指令:"script-src 'self' 'wasm-unsafe-eval'"。要启用内联执行,需要使用'unsafe-inline'关键字、哈希值('sha256-...')或随机数('nonce-...')。请注意,除非存在'unsafe-hashes'关键字,否则哈希值不适用于事件处理器、样式属性和javascript:导航。

问题本质

Manifest V3 并非不支持oninput事件,而是其默认内容安全策略(CSP)严格禁止内联脚本(包括HTML元素上的oninput这类内联事件处理器),这是Manifest V3为提升扩展安全性强制推行的规则,和oninput事件本身无关。

不建议的临时绕过方案

虽然可以在manifest.json的content_security_policy字段中添加'unsafe-inline'来规避限制,但这会大幅降低扩展的安全性,违背Manifest V3的设计初衷,甚至可能导致扩展无法通过Chrome应用商店审核,因此绝对不推荐使用。

标准合规的实现方式

移除HTML中的内联oninput属性,改为在JavaScript中通过addEventListener绑定事件,具体代码修改如下:

修改后的HTML

<input type="text" id="durationtimestamp" value="00:00" required="required" style="width:35px;">

对应的JavaScript(建议放在单独的popup.js文件中)

// 等待DOM加载完成后绑定事件
document.addEventListener('DOMContentLoaded', () => {
  const inputElem = document.getElementById('durationtimestamp');
  inputElem.addEventListener('input', function() {
    durationtimestamp(this.value);
  });
});

// 你的原有处理函数
function durationtimestamp(value) {
  // 此处编写你的业务逻辑代码
}

这种实现方式完全符合Manifest V3的CSP规则,既能正常触发input事件,又能保证扩展的安全性。


内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:50:23