**主要优化点说明:**
1. **动态图标管理**
```javascript
updateIconVisibility() {
if (this.shouldShowIcon() && !this.iconInstance) {
this.setupIcon();
} else if (!this.shouldShowIcon() && this.iconInstance) {
// 移除图标
}
}
```
- 自动根据当前域名更新图标状态
- 支持SPA应用的路由变化
2. **增强配置系统**
```javascript
protectedDomains: {
'youtube.com': {
icon: true, // 启用图标显示
selectors: [/*YouTube专用选择器*/],
networkPatterns: [/*广告请求特征*/]
}
}
```
- 每个域名独立配置
- 支持网络请求模式匹配
3. **多层保护机制**
```javascript
isProtected(element) {
return domainConfig.selectors?.some(...) ||
domainConfig.containers?.some(...);
}
```
- 同时检查元素本身和父容器
- 防止误删关键元素
4. **性能优化**
```javascript
forceScan() {
this.scanElement(document.documentElement);
}
```
- 智能扫描整个文档树
- 使用防抖机制控制扫描频率
5. **网络拦截增强**
```javascript
isAdRequest(url) {
const patterns = this.getDomainConfig()?.networkPatterns || [];
return patterns.some(p => p.test(url));
}
```
- 域名特定的广告请求匹配
- 支持正则表达式检测
6. **状态反馈增强**
```javascript
showStatusInfo() {
this.tooltipInstance.innerHTML = `
拦截版本: v2.2
最后扫描: ${new Date().toLocaleTimeString()}
已拦截请求: ${this.blockedCount || 0}
`;
}
```
- 显示实时统计数据
- 格式化时间信息
**使用说明:**
1. **在YouTube上的表现**
- 右下角显示红色状态图标
- 鼠标悬停显示拦截状态
- 点击显示详细统计信息
- 自动跳过前贴片广告
- 移除视频内嵌广告
2. **在百度/Google的表现**
- 不显示状态图标
- 保护搜索框及相关元素
- 正常拦截广告内容
3. **通用网站**
- 自动应用通用广告规则
- 拦截常见广告框架
- 保护页面主体内容
**扩展建议:**
1. 添加用户配置界面:
```javascript
// 示例:使用GM_config
GM_config.init({
'fields': {
'showIcon': {
'label': '显示状态图标',
'type': 'checkbox',
'default': true
}
}
});
```
2. 增加拦截统计功能:
```javascript
class AdBlocker {
constructor() {
this.stats = {
elementsRemoved: 0,
requestsBlocked: 0
};
}
safeRemove(element) {
this.stats.elementsRemoved++;
// ...
}
}
```
3. 支持自定义规则:
```javascript
const userRules = GM_getValue('customRules', []);
SecurityConfig.adSelectors.push(...userRules);
```
此版本在保持高效广告拦截的同时,通过动态图标系统提供清晰的状态反馈,并增强了多站点兼容性。