
1. 使用`document.addEventListener`替代内联监听
在插件的`background.js`或`content.js`中添加:
javascript
document.getElementById('my-button').addEventListener('click', function() {
// 执行核心逻辑
});
避免直接在HTML标签中使用`onclick`属性,减少内存泄漏风险。
2. 防抖处理高频点击场景
通过以下代码限制事件触发频率:
javascript
let isCooldown = false;
function handleClick() {
if (isCooldown) return;
isCooldown = true;
setTimeout(() => isCooldown = false, 300); // 300ms冷却时间
// 处理点击逻辑
}
document.getElementById('my-button').addEventListener('click', handleClick);
防止用户快速多次点击导致重复请求或崩溃。
3. 动态移除无效事件监听器
在插件卸载或页面跳转时执行:
javascript
document.getElementById('my-button').removeEventListener('click', handleClick);
释放事件绑定资源,避免影响后续操作。
4. 利用消息队列异步处理任务
将复杂逻辑拆分为消息发送和接收:
javascript
// 在按钮监听中发送消息
chrome.runtime.sendMessage({ action: 'processTask' });
// 在background.js中处理
chrome.runtime.onMessage.addListener((msg) => {
if (msg.action === 'processTask') {
// 异步执行耗时操作
}
});
提升响应速度,防止主线程阻塞。
5. 校验按钮状态后再触发逻辑
在事件回调前检查按钮可用性:
javascript
function handleClick() {
if (!document.getElementById('my-button').enabled) return;
// 继续执行
}
避免因元素被禁用或隐藏导致的错误。