重定向优化百度搜狗谷歌必应搜
// ==UserScript==
// @name AC-baidu:重定向优化百度搜狗谷歌必应搜索_favicon_双列
// @name:en AC-baidu:google_sogou_bing_RedirectRemove_favicon_adaway_TwoLine
// @name:zh AC-baidu:重定向优化百度搜狗谷歌必应搜索_favicon_双列
// @name:zh-CN AC-baidu:重定向优化百度搜狗谷歌必应搜索_favicon_双列
// @name:ja AC-baidu:重定向最適化Baiduの搜狗のGoogleのBing検索結果のリダイレクト除去+favicon
// @description 1.繞過百度、搜狗、谷歌、好搜搜索結果中的自己的跳轉鏈接,直接訪問原始網頁-反正都能看懂 2.新增自定义网站拦截功能 3添加Favicon显示 4.页面CSS 5.添加计数 6.开关选择以上功能 7.自动翻页功能
// @description:en 1.bypass the redirect link at baidu\sogou\google\haosou; 2.remove ads at baidu; 3.add Favicon for each website; 4.render your own style; 5.counter; 6.Switch to handle all 7.Auto Pager
// @description:ja 1.迂回Baidu、Sogou、Google、Haosou検索検索結果の中の自分の遷移リンク; 2.Baiduの余分な広告を取り除く; 3.コメントを追加; 4.ページのカスタムCSP; 5.カウントを追加; 6.スイッチは以上の機能を選択します; 7.自動ページめくり.
// @icon https://img.tujidu.com/image/5e7ba0d6b0062.jpg
// @author AC
// @license GPL-3.0-only
// @create 2015-11-25
// @run-at document-start
// @version 23.32
// @connect www.baidu.com
// @include *://ipv6.baidu.com/*
// @include *://www.baidu.com/*
// @include *://m.baidu.com/*
// @include *://xueshu.baidu.com/s*
// @include *://www.sogou.com/web*
// @include *://www.sogou.com/sie*
// @include *://www.sogou.com/sogou*
// @include *://www.sogou.com/tx*
// @include *://www.so.com/s?*
// @include *://*.bing.com/*
// @include *://encrypted.google.*/search*
// @include *://*.google*/search*
// @include *://*.google*/webhp*
// @include *://*.zhihu.com/*
// @exclude *://*.google*/sorry*
// @namespace 1353464539@qq.com
// @supportURL https://qm.qq.com/cgi-bin/qm/qr?k=fOg8ij6TuwOAfS8g16GRYNf5YYFu5Crw&jump_from=&auth=-l05paasrPe5zigt5ahdzn_dzXiB1jJ_
// @home-url https://greasyfork.org/zh-TW/scripts/14178
// @home-url2 https://github.com/langren1353/GM_script
// @homepageURL https://greasyfork.org/zh-TW/scripts/14178
// @copyright 2015-2020, AC
// @lastmodified 2020-04-24
// @feedback-url https://qm.qq.com/cgi-bin/qm/qr?k=fOg8ij6TuwOAfS8g16GRYNf5YYFu5Crw&jump_from=&auth=-l05paasrPe5zigt5ahdzn_dzXiB1jJ_
// @note 2020.04-24-V23.32 版本倒退:安全起见:默认关闭搜狗的自定义域名拦截功能和重定向功能-以后考虑更换方式;默认不开启重定向功能、默认不开启广告拦截功能;更新部分说明内容;同时也对部分支持不到位的,兼容不好的效果向大家说一声抱歉,之后我会更加努力让搜索结果更加方便查看和使用
// @note 2020.03-27-V23.31 修复google由于页面结构更新导致的block功能失效的问题,同时修复谷歌护眼模式也失效的问题。新增翻页的按钮事件,新增使用在线config,避免由于页面结构改动又需要重新提交脚本更新
// @note 2020.03-26-V23.30 小改代码with GoogleLOGO && 修复在inject极速模式下的小问题 && 修复各种样式问题 && 自定义样式开启动态模式 && 新增自动翻页功能-妈妈再也不用担心我翻页问题了-[推荐更新]
// @note 2019.12-16-V23.29 自定义英文和中文的显示效果 && 修复上个版本导致的block按钮丢失的问题 && 修复部分百度内容无法拦截的情况
// @note 2019.12-15-V23.28 由于域名备案丢失了,只能换一个 && 修复自己认为的谷歌favicon已存在的问题,实际上谷歌favicon并没有显示
// @note 2019.11-28-V23.27 修复上次更新导致的某些模式下window对象无法获取导致的异常进而导致的脚本无法运行的bug & 优化百度样式内容和谷歌单列的偏右的情况以及必应中英文的偏移位置 修复屏蔽功能失效的bug
// @note 2019.10-05-V23.25 修复谷歌样式、必应样式、百度的部分样式问题.修复屏蔽模式在chrome内核上的小bug 新增自动全英文模式 修复被翻译导致的bug
// @note 2019.09-13-V23.24 修复谷歌由于页面改动导致的插入之后的样式变化 & 修复上次更新导致的重定向失效的问题
// @note 2019.09-12-V23.23 紧急修复谷歌页面的bug & 增加时间判断是否重置最新的自定样式 & 修复整体页面的内存占用以及采用RAF来替代setInterval & 优化拦截列表并修复列表数据过多的删除失败的问题 & 新增支持通配符拦截模式 & 全部使用处理结果后的顺序
// @note 2019.08-09-V23.22 1.移除手机百度的广告内容 2.更换数据来源地址为ibaidu.ntaow.com降低服务器负载 3.变更:页面加载不载入iframe,点击显示后载入iframe 4.未启用自定义样式时间过长会更新最新的样式表 5.修复各大搜索的样式问题-侧移+背景透明 6.修复edge首页的问题 7.block屏蔽之后可以直接取消了 8.采用错误页支持后续的google的iframe嵌入
// @note 2019.06.16-V23.21 修复在屏蔽列表中加入异常数据导致的部分数据异常,同时还无法移除的bug && 修改Baidu学术的生效页面,避免导致其他学术页面的显示出问题 && 修复在缩放150%的情况下搜索框位置异常的问题
// @note 2019.06.15-V23.20 尽量修改在adguard上的部分兼容问题--如果有问题记得叫我
// @note 2019.06.05-V23.19 修复由于去广告其他插件导致的本脚本异常的问题 修复必应上的样式部分异常问题 修复图标的地址异常问题
// @note 2019.05.06-V23.18 修复Baidu学术的异常,上次修改了,但是代码没有生效 && 新增BaiduLite的样式效果-from yiclear _ pan_cao && 优化页面显示效果,加快样式的载入速度 && 根据申杰老司机的推荐修改了许多残留的bug并且优化了页面的数据提示
// @note 2019.05.05-V23.17 修复Baidu首页的图标异常的问题
// @note 2019.04.26-V23.15 修复护眼色调节;新增不显示lock按钮选项;新增谷歌伪装百度;修复谷歌和百度页面的搜索样式;修复百度学术页面异常
// @note 2019.03.30-V23.14 更新一下说明文档 && 添加一个github的跳转按钮 && 新增背景色
// @note 2019.03.28-V23.13 更新-移除部分异常的百度白屏问题.新域名baidu.mx并不是百度旗下的地址,所以跳过。顺便刷一个版本,修复谷歌的recapture的问题,感谢老司机“breath365”
// @note 2019.02.16-V23.12 修复上次更新导致的一堆bug & 更换资源。。。腾讯CDN真的不够你们用,还是用百度的免费cdn吧
// @note 2019.02.15-V23.11 修复和Google Search Extra Button的兼容问题。修复地址有时候不能访问的问题。修复旧ff上的forEach和innerText不能用的问题。删除部分旧日志
// @note 2019.02.14-V23.10 安静点,我有女朋了i_i。& 修复百度图片失效的问题
// @note 2019.02.13-V23.09 提供选项-直接删除已屏蔽的内容,避免看到一些垃圾无用信息;修复残留bug在单列时相关搜索宽度异常;优化百度图标为透明图标
// @note 2019.01.29-V23.08 修复从首页进入的导致的block功能失效的问题;修复移动预测按钮失效的问题;新增并修复百度手机版的兼容问题-支持手机版重定向;新增原始地址展示,减少百度更新导致的看不到地址的问题;优化拦截列表的展示和刷新的问题
// @note 2019.01.25-V23.07 修复Favion加载失败的问题-这下就可以自定义favicon了,以前遗留了很久的bug了 && 移除部分LOG减小代码
// @note 2019.01.25-V23.06 修复由于代码优化,导致的Huyan功能开启后脚本失效的问题
// @note 2019.01.25-V23.05 假装大家没发现bug,赶紧更新搜狗页面的bug
// @note 2019.01.25-V23.03 优化提示效果; 修复有时候自定义按钮无法显示的情况;新增搜狗页面的多列效果
// @note 2019.01.23-V23.02 修复初始化的时候数据异常导致的block拦截无效的问题
// @note 2019.01.23-V23.01 新增说明-感谢大神Jefferson Scher的拦截脚本https://greasyfork.org/zh-CN/scripts/1682. Thanks for the script of Jefferson Scher Without his help I can't Implement this Function.
// @note 2019.01.23-V23.00 新增拦截模式,可以自定义的选择拦截某个域名,拦截掉你不想看的内容
// @note 2018.12.25-V22.06 移除谷歌底部广告
// @note 2018.12.22-V22.05 修复小细节问题
// @note 2018.12.22-V22.04 修复百度搜索“咨询”栏目下没有搜索结果的问题 && 同时修改部分样式 && 修复输入框右侧无法点击输入的问题
// @note 2018.12.22-V22.03 修复edge的样式错乱问题 && 修复谷歌双列样式问题 && 修复百度顶部大空白的问题 && 修复支持DarkReader
// @note 2018.12.20-V22.02 修复样式加载 && 修复护眼模式效果
// @note 2018.12.20-V22.01 更换样式表插入模式,尽量避免闪烁问题; 修复edge上该模式的兼容问题
// @note 2018.12.19-V21.15 修复上次更新导致的护眼模式失效的问题
// @note 2018.12.19-V21.14 修复在edge上样式没有生效的问题
// @note 2018.12.19-V21.13 修复上次更新代码忘记修改导致的bug,修复百度移动预测的遗留bug
// @note 2018.12.18-V21.12 继续加快移除广告的内容,尽量减少闪烁的情况;
// @note 2018.12.18-V21.11 修复在特殊情况下的样式表没有生效的问题,同时能够更快速的移除广告内容
// @note 2018.12.18-V21.10 修复特殊关键内容搜索下,由于移除广告导致的页面顶部特殊标记显示不正确的问题。
// @note 2018.12.18-V21.9 再次优化样式表加载速度,能更好的更快速的加载样式而不影响代码运行
// @note 2018.12.08-V21.8 修复srcElement在firefox旧版本上不支持的问题
// @note 2018.12.07-V21.7 修复护眼色的引入;修复GM小于4.0版本的兼容问题;优化选项的位置,避免过长
// @note 2018.12.06-V21.6 感谢Mooncan对谷歌样式调整的建议,已经采用了该样式,效果特别好; 同时修复了谷歌右侧栏的位置问题
// @note 2018.12.06-V21.5 P_P修复上一版没有测试导致的支持ViolentMonkey但是有不支持GreaseMonkey的问题;更换css地址;修复护眼色在百度上的部分样式问题
// @note 2018.12.06-V21.4 修复ViolentMonkey的支持;至此已经完全支持三只猴子(TamperMonkey、ViolentMonkey、GreaseMonkey)了;如果还有BUG-直接加群反馈
// @note 2018.12.06-V21.3 修复在edge上样式错乱的问题 && 修复宽度过宽的问题
// @note 2018.12.05-V21.2 移除默认的护眼模式。。。
// @note 2018.12.05-V21.1 修复GreaseMonkey不支持GM_getResourceText导致的样式无法引入的问题,使用自己的服务器中转
// @note 2018.12.05-V21.0 新增必应单列、双列、多列展示;新增护眼模式,各种颜色自定义设置;修复谷歌已浏览的网址未变色问题;优化一定的资源占用
// @note 2018.10.18-V20.5 修复由于谷歌更新导致的样式问题
// @note 2018.10.08-V20.4 修复由于去广告导致的卡顿问题 & 重写favicon添加的位置元素-减少错位产生
// @note 2018.10.03-V20.3 国庆无事,刷版本; 修复在侧边栏开启需要在1920的分辨率下的问题,默认关闭侧边栏的样式操作,如果需要开启的话,在自定义样式中设置开启即可,增加三列|四列模式
// @note 2018.10.01-V20.2 修复拦截广告过多导致的页面显示问题-有些正常地址也被拦截了->似乎发现不是这个脚本的bug;那就刷个版本吧,正好处理下样式缓存问题 & 大家国庆节快乐
// @note 2018.09.21-V20.1 修复在ViolentMonkey的兼容问题 && 样式加载缓慢的问题
// @note 2018.09.21-V20.0 修复闪烁频繁的问题;修复由于扩展和脚本模式两个CSS同时加载导致的问题;新增点击任意位置关闭设置按钮;修复在bing上的计数器位置错误;调整页面单页的样式,这次是真的居中了
// @note 2018.09.19-V19.8 修复TamperMonkey和扩展模式下的兼容问题
// @note 2018.09.19-V19.7 分离去广告功能和自定义样式功能
// @note 2018.09.18-V19.6 修复由于infinity扩展的地址导致的百度样式没有载入的问题;修复万年bug之搜索预测无效的问题
// @note 2018.09.18-V19.5 新增支持扩展模式-推荐使用扩展;修复谷歌地图页面的载入问题;配置脚本GPL协议;支持旧版本的chrome上的自定义显示结果却在最底部的问题-无法解决旧版本chrome上双列的问题
// @note 2018.08.31-V19.4 修复1.google页面中计数器Counter在账号登录后的显示错位问题; 2.排除掉百度可能存在的error情况的地址; 3.更换css样式地址,我的CDN流量撑不住了
// @note 2018.08.24-V19.3 修复谷歌图片在单列模式下的错位问题
// @note 2018.08.17-V19.2 修复谷歌和百度的部分样式问题
// @note 2018.08.16-V19.1 继续修复谷歌和百度双列的问题,这次尽量采用css样式表来调整,感觉效果还可以
// @note 2018.08.14-V18.9 修复谷歌双列的翻页错位的问题; 百度搜索结果的阴影模式; 高分屏等我找到一台高分的显示器再说吧
// @note 2018.08.11-V18.8 紧急-修复更新规则导致的谷歌失效的问题
// @note 2018.08.10-V18.7 推荐升级:修改生效规则,尽量避免弹出提示更新窗口;修复-chrome4x版本的bug;预计下次更新处理高分屏显示界面问题
// @note 2018.08.08-V18.6 更新脚本命名; 尝试解决http没有自动https的问题--------刷版本号
// @note 2018.08.04-V18.5 修复在chrome上脚本偶尔没有生效的问题;修复百度搜索顶部侧移的情况;一定情况下修复双页的分列
// @note 2018.07.25-V18.4 仅做文本说明修改-en-jp; 下次预计修改百度首页的广告问题
// @note 2018.07.25-V18.3 减少了偶尔从首页加载进来的时候样式表没有载入的问题~能遇到部分样式表加载失效的情况很少;优化广告移除
// @note 2018.07.24-V18.2 修复从百度首页加载进入页面时样式表没有载入的问题
// @note 2018.07.24-V18.1 整体优化样式表加载速度-百度和谷歌的界面美化一下就载入了特别快;修复百度搜索的小链接的重定向没有改;修复下划线移除选项的下划线移除模式
// @note 2018.07.21-V18.0 修复搜狗搜索没有获取到真实链接的问题;处理百度重定向速度又快又好;这次更新就支持edge了,同时理论上支持safari,希望测试;其次优化谷歌的界面样式
// @note 2018.07.12-V17.9 修改检测参数,兼容支持Opera浏览器;暂时还是不支持EDGE的链接重定向功能
// @note 2018.07.07-V17.8 修复由于上次更新世界杯界面时导致的shadowDOM关闭,然后广告出现的问题;优化整体去广告规则---有工具何必自己造轮子-本次用了百度自带jquery的查询函数has()
// @note 2018.06.29-V17.7 修复右边栏导致的右侧过高,左侧看不见,以及自定义页面样式丢失的问题
// @note 2018.06.27-V17.6 暂时关闭ShadowDOM的移除功能-尽量保留搜索世界杯功能完善。修复在某些页面上脚本无法运行的情况。新增自定义样式的输入框
// @note 2018.06.26-V17.5 默认关闭右边栏-昨天忘了关闭了
// @note 2018.06.25-V17.4 1.修复谷歌双列问题;2.修复右边栏展示-好些人说去掉之后不好看;3.似乎上个版本又有多次插入导致的页面卡顿情况-再次修复。。。其他的似乎没有了,想起再说
// @note 2018.06.14-V17.3 由于edge中还是不支持返回真实链接,于是暂时屏蔽掉edge浏览器总的请求,等猴子更新了再开启这个功能;connect元素中添加baidu.com避免抽风
// @note 2018.06.13-V17.2 加快查询速度-同时不再弹窗说新连接,无需设置特殊参数;缺点:LOG中会有许多Refused to connect to "xxx": Request was redirected to a not whitelisted URL
// @note 2018.05.25-V17.1 新增支持百度学术的重定向功能
// @note 2018.05.25-V17.0 拆分关键词高亮这个功能,保证功能尽量不交叉,如果需要这个功能的,请安装搜索关键词自动高亮脚本
// @note 2018.05.22-V16.5 尝试缓解内存的问题,避免对其他的进行干扰,同时减少了head标签触发
// @note 2018.05.22-V16.4 彻底拆分双击高亮和自动高亮功能,同时保持两个功能都是关闭状态
// @note 2018.05.22-V16.3 设置添加双击高亮按钮
// @note 2018.05.22-V16.2 不再使用MO方式,百度的原因导致MO彻底无法使用,于是全都用DOM操作来判断吧
// @note 2018.05.21-V16.1 优化ac_redirectstatus高亮的问题; 同时修复了一个高亮关键词的bug;在一个老司机的指点下,添加了referer参数
// @note 2018.05.21-V16.0 谢谢朋友们关心5.20我还是一个人过的很好;大版本:修正计数器的计数问题,修正MO失效之后脚本的触发问题;新增搜索关键词高亮选项,默认关闭
// @note 2018.05.06-V15.3 简单移除好搜的广告
// @note 2018.04.20-V15.2 修复bing的Favicon效果,避免显示在不同行上
// @note 2018.04.04-V15.1 继续尝试修复bug,优化整体页面效果以及谷歌其余页面的效果展示;同时将百度样式写入到#wrapper>#head中去,刷新或者更换页面时就不会异常闪烁并且很平滑了
// @note 2018.04.02-V14.9 更新谷歌整体效果,并尝试修复图片新闻等显示问题的bug
// @note 2018.04.01-V14.8 --日狗问题,忘了改代码,只是更新了说明。。
// @note 2018.04.01-V14.7 经过老司机(没ID)提供的反馈,发现上一版更新的依旧有bug,修复调小触发参数导致的触发没有生效的问题--偶尔双列失效的问题
// @note 2018.04.01-V14.6 经过老司机(没ID)提供的反馈,排查发现chrome上脚本首次载入失效的问题,已经修复
// @note 2018.04.01-V14.5 更新并添加谷歌双列、待测试,如果有问题,可以直接反馈
// @note 2018.03.28-V14.4 移除jquery的require,疑似jquery引起冲突问题,于是彻底弃用jquery来处理页面数据,改用原声JS处理页面
// @note 2018.03.27-V14.3 刷一个版本号,同时优化CSS载入过多的问题,但是载入过慢的问题又出现了,下次处理
// @note 2018.03.26-V14.2 修复由于上次更新过于流畅的bug,同时修正首页的样式显示
// @note 2018.03.25-V14.1 再次抄点代码,借鉴老司机:浮生@未歇的部分优化代码完善已有的(@resource、GM_getResourceText、GM_addStyle),避免页面闪烁一下,同时解决部分css载入重复的问题
// @note 2018.03.23-V14.0 1.尝试修复在百度贴吧和百度知道的文字显示异常的问题; 2.修复编号奇怪的异常问题
// @note 2018.03.18-V13.9 更新谷歌的favicon丢失的问题
// @note 2018.03.04-V13.8 更新图库为https模式,避免那啥显示不安全
// @note 2018.02.16-V13.7 1.新增关闭百度搜索预测;2.新增未知图标时切换; 3.移除百度搜索建议的顶部一条
// @note 2018.01.12-V13.6 1.新增移除右边栏的按钮;2.新增版本显示文字;3.修正favicon位置;4.修复favicon的图片错误时候的值,万年BUG
// @note 2017.12.27-V13.5 修复由于上个版本更新处理白屏,导致的默认标准模式的右侧栏不见了
// @note 2017.12.20-V13.4 感谢ID:磁悬浮青蛙的反馈,已经修复小概率搜索之后点击结果白屏的问题-貌似之前处理过,但是没有彻底处理掉,这次彻底了,改用CSS隐藏
// @note 2017.12.04-V13.3 新增设置,针对百度系列的重定向问题,不常用百度系列的朋友可以开启这个功能
// @note 2017.11.23-V13.2 感谢卡饭坛友@Apollo8511提供反馈,已经修复部分知乎的重定向问题,更多问题可以直接反馈我
// @note 2017.11.22-V13.1 移除百度系的重定向,虽然处理了,但是百度系直连会导致文字无法直接显示,其他直连不影响
// @note 2017.11.17-V12.13 进一步移除百度的广告,右边部分广告的处理和移除
// @note 2017.11.15-V12.12 搜狗的搜索地址又变了,加一个
// @note 2017.11.02-V12.11 新增在手机mobile模式下百度的重定向处理,其余网站以后再说吧,估计没有需求
// @note 2017.10.27-V12.10 1.修复逼死强迫症的问题;2.移除完整模式-避免出现各种拦截;3.修复www.so.com的重定向问题
// @note 2017.09.18-V12.9 更新原因:1.勿忘国耻918;2.更新百度偶尔重定向没成功的问题;3.修复页面的小问题;4.新增文字下划线开关
// @note 2017.09.15-V12.8 紧急修复谷歌上页面卡顿的问题,排查得知为百度规则的扩展出了问题,非常感谢众多朋友的支持,没有你们的反馈就没有这个脚本。修复并移除了百度官方采用的新方式广告模式,貌似只在chrome上出现
// @note 2017.09.13-V12.7 1.修复N年前更新导致的部分网址重定向无效,继续使用GET方法,因为好些网站不支持HEAD方法,获取成功之后就断开,尽量减少了网络开支; 2.修复搜狗的部分搜索异常; 3.修复百度在chrome61上的链接异常问题
// @note 2017.09.13-V12.6 开学之后的第二个版本,修复上次更新导致的百度首页错乱,修复firefox上的触发,修复SuperPreloader的翻页展示
// @note 2017.09.12-V12.5 开学之后的第一个版本,修复在百度上偶尔不触发的问题【从首页搜索的时候触发】,其次在兄弟XXX(我也忘了哪个P_P)的帮助下,修复了偶尔会全屏特殊推广模式的问题
// @note 2017.09.06-V12.4 修复上个版本更新导致的百度知道再次异常问题;更新知乎上的重定向问题-自己的脚本
// @note 2017.09.06-V12.3 修复双列的模式的显示问题,如果有问题希望反馈一下,顺便切换css来源
// @note 2017.09.04-V12.2 特意修复在ViolentMonkey上的设置无效的问题以及在360浏览器上的设置不显示问题
// @note 2017.09.04-V12.1 百度页面直接添加设置入口;360浏览器设置可能在底部页面;支持单列和双列模式,界面更美观from浮生@未歇;可能是最近一段时间的最后版本了,要开学了~~
// @note 2017.09.02-V11.10 添加两个选项,可以选择性移除部分设置
// @note 2017.09.01-V11.9 修复上次更新导致的百度去广告不灵的问题
// @note 2017.08.30-V11.8 新增:1.GM设置栏目中加入设置 2.baidu-使用HEAD方式获取,减少数据传输,搜狗特殊,继续GET方式
// @note 2017.08.29-V11.7 方便朋友们-移除知乎重定向
// @note 2017.08.07-V11.6 调整:移除小绿点,换为点击Favicon或者是计数器弹出窗口,更换为加群链接
// @note 2017.08.06-V11.5 修复,保存异常;预期之后会添加百度搜索页面的大调整
// @note 2017.08.05-V11.4 新增:反馈和建议地址增加
// @note 2017.08.04-V11.3 修复:由于英语不好导致的拼写错误,感谢shj兄弟指出
// @note 2017.08.03-V11.2 新增:谷歌链接新标签打开; 移除搜索结果链接的下划线
// @note 2017.07.22-V11.1 新增了开关模式,可以开启或者关闭某些自己不喜欢的功能,开关在右上角,和SuperPreload共用
// @note 2017.06.25-V10.1 修复上次更新导致的百度去广告的问题
// @note 2017.06.25-V10.0 修复上次更新导致的百度知道再次出现老问题
// @note 2017.06.24-V9.9 更新了翻页的问题,经过多次的尝试应该没有太大问题了
// @note 2017.06.24-V9.8 更新了bing上的图片favicon地址;并且尽量减少了MO触发次数,避免页面卡顿;修复搜狗的重定向问题
// @note 2017.06.23-V9.7 上传错了~重新来,顺带处理了谷歌favicon问题
// @note 2017.06.23-V9.6 修复了谷歌重定向的问题~~我的锅
// @note 2017.06.11-V9.5 不再使用DOM方式来监听页面了,使用timer+MO来处理,极大减少了cpu占用时间和瞬时网速占用
// @note 2017.05.26-V9.4 恢复favicon模式,现在这个脚本基本上全了,有需要以后再说
// @note 2017.05.15-V9.3 暂时移除百度右边侧栏的广告移除模式,准备下次优化好了再继续
// @note 2017.05.12-V9.2 暂时移除谷歌的安全搜索模式,因为很复杂的原因
// @note 2017.05.12-V9.1 暂时移除Favicon的显示,因为这样就杂了,有需要的人自己去装这个脚本吧,保留百度去广告
// @note 2017.05.12-V9.0 集合了去重定向+去广告+Favicon显示
// @note 2017.05.12-V8.7 集合了去广告的脚本,以前的那个去广告的脚本就不用了
// @note 2017.05.12-V8.6 修复谷歌安全搜索的BUG V2
// @note 2017.05.12-V8.4 新增:默认屏蔽谷歌的安全搜索功能
// @note 2017.05.05-V8.3 修复include范围太小导致的百度知道的屏蔽问题
// @note 2017.05.04-V8.2 终于修复了百度知道图片替换了文字的这个大BUG; 顺便处理了superapi.zhidao.baidu.com; 新增谷歌搜索结果重定向去除
// @note 2017.05.04-V8.1 终于修复了百度知道图片替换了文字的这个大BUG,顺便处理了superapi.zhidao.baidu.com
// @note 2017.05.04-V8.0 终于修复了百度知道图片替换了文字的这个大BUG,待测试
// @note 2017.03.28-V7.6 修复在ViolentMonkey上的不支持的问题
// @note 2017.03.28-V7.5 尝试修复chrome上的问题
// @note 2017.03.21-V7.4 尝试处理Edge上不支持的问题,结果发现是Edge本身的TamperMonkey支持有问题
// @note 2017.03.19-V7.3 修复打开百度之后再次点击“百度一下”导致的无法更新重定向问题
// @note 2017.03.19-V7.2 未知原因chrome的MutationObserver无法使用了,继续回归以前的DOMNodeInserted
// @note 2017.02.17-V7.0 修复搜狗的搜索结果重定向问题+改个名字
// @note 2017.02.17-V6.9 修复搜狗的搜索结果重定向问题
// @note 2016.12.10-V6.8 ***
// @note 2016.10.27-V6.7 修复了以前的重复请求,现在的请求数应该小了很多,网络也就不卡了,感觉萌萌哒
// @note 2016.04.24-V6.6 恢复以前的版本,因为兼容性问题
// @note 2015.12.01-V5.0 加入搜狗的支持,但是支持不是很好
// @note 2015.11.25-V2.0 优化,已经是真实地址的不再尝试获取
// @note 2015.11.25-V1.0 完成去掉百度重定向的功能
// @resource baiduCommonStyle http://ibaidu.htt5.com/newcss/baiduCommonStyle.css?t=23.31
// @resource baiduOnePageStyle http://ibaidu.htt5.com/newcss/baiduOnePageStyle.css?t=23.31
// @resource baiduTwoPageStyle http://ibaidu.htt5.com/newcss/baiduTwoPageStyle.css?t=23.31
// @resource baiduLiteStyle http://ibaidu.htt5.com/newcss/baiduLiteStyle.css?t=23.31
// @resource googleCommonStyle http://ibaidu.htt5.com/newcss/googleCommonStyle.css?t=23.31
// @resource googleOnePageStyle http://ibaidu.htt5.com/newcss/googleOnePageStyle.css?t=23.31
// @resource googleTwoPageStyle http://ibaidu.htt5.com/newcss/googleTwoPageStyle.css?t=23.31
// @resource bingCommonStyle http://ibaidu.htt5.com/newcss/bingCommonStyle.css?t=23.31
// @resource bingOnePageStyle http://ibaidu.htt5.com/newcss/bingOnePageStyle.css?t=23.31
// @resource bingTwoPageStyle http://ibaidu.htt5.com/newcss/bingTwoPageStyle.css?t=23.31
// @resource sogouCommonStyle http://ibaidu.htt5.com/newcss/sogouCommonStyle.css?t=23.31
// @resource sogouOnePageStyle http://ibaidu.htt5.com/newcss/sogouOnePageStyle.css?t=23.31
// @resource sogouTwoPageStyle http://ibaidu.htt5.com/newcss/sogouTwoPageStyle.css?t=23.31
// @resource MainHuYanStyle http://ibaidu.htt5.com/newcss/HuYanStyle.css?t=23.31
// @resource SiteConfigRules http://ibaidu.htt5.com/newcss/SiteConfigRules.conf?t=23.31
// @grant GM_getValue
// @grant GM.getValue
// @grant GM_setValue
// @grant GM.setValue
// @grant GM_addStyle
// @grant GM_xmlhttpRequest
// @grant GM_getResourceText
// @grant GM_registerMenuCommand
// ==/UserScript==
!function () {
let isdebug = false;
let isLocalDebug = isdebug || false;
let debug = isdebug ? console.log.bind(console) : function () {
};
let acCssLoadFlag = false;
let inExtMode = typeof(isExtension) != "undefined";
let inGMMode = typeof(GM_info.scriptHandler) != "undefined"; // = "Greasemonkey" || "Tampermonkey" || "ViolentMonkey"
// 新版本的GreaseMonkey是带有scriptHandler,但是没有GM_getResourceText;旧版本不带scriptHandler,但是有GM_getResourceText
let isNewGM = typeof(GM_info.scriptHandler) != "undefined" && GM_info.scriptHandler.toLowerCase() == "greasemonkey";
let useCNLan = true; // 暂定,之后需要逻辑处理
// inExtMode & inGMMode
// true true =扩展下的GM代码 不执行
// true false=扩展下代码 执行
// false true =仅GM代码 执行
// false false=异常 但是还是要执行代码
debug("程序开始");
if (inExtMode == true && inGMMode == true) {
console.log("扩展模式-脚本不启用");
return;
}
if (typeof(GM) == "undefined") {
// 这个是ViolentMonkey的支持选项
GM = {
};
GM.setValue = GM_setValue;
GM.getValue = GM_getValue;
}
(function () {
debug("程序执行");
let needDisplayNewFun = true; // 本次更新是否有新功能需要展示
if (window.NodeList && !NodeList.prototype.forEach) {
NodeList.prototype.forEach = function (callback, thisArg) {
thisArg = thisArg || window;
for (var i = 0; i < this.length; i++) {
callback.call(thisArg, this[i], i, this);
}
};
}
if(!Array.prototype.acpush){
/**
* 进行不重复插入,插入后执行回调函数
* @param data 待插入数据
* @param callback 回调函数
*/
Array.prototype.acpush = function (data, callback) {
// 如果是垃圾数据,那么可以丢弃的
if(data == null) return;
// 如果数据中有回车,那数据也是无效的正文而已
if(data.replace(/({|}|,|\+|:|。|\n)/) != data) return;
if(this.findIndex(m => m == data) < 0){
this.push(data);
callback && callback(this);
}
};
Array.prototype.acremove = function (data, callback) {
let delId = this.findIndex(m => m == data);
if(delId >= 0){
this.splice(delId, 1);
callback && callback(this);
} // 删除delId的数据,删除一个
};
}
let ACConfig = {
};
/*存在对未初始化变量的初始化赋值-无需担心迭代兼容问题*/
let DefaultConfig = {
isRedirectEnable: false, // 是否开启重定向功能
isAdsEnable: false, // 是否开启去广告模式
isAutopage: true, // 是否开启自动翻页功能
isBlockEnable: false, // 是否开启去拦截模式
isBlockDisplay: false, // 是否删除已拦截的条目
isBlockBtnDisplay: true, // 是否显示block按钮
AdsStyleEnable: true, // 是否开启自定义样式模式
AdsStyleMode_Baidu: 2, // 0-不带css;1-单列靠左;2-单列居中;3-双列居中
AdsStyleMode_Google: 2, // 0-不带css;1-单列靠左;2-单列居中;3-双列居中
AdsStyleMode_Bing: 3, // 0-不带css;1-单列靠左;2-单列居中;3-双列居中
AdsStyleMode_SoGou: 3, // 0-不带css;1-单列靠左;2-单列居中;3-双列居中
HuYan_Baidu: false, // 护眼模式-百度
HuYan_Google: false, // 护眼模式-谷歌
HuYan_Bing: false, // 护眼模式-必应
HuYan_SoGou: false, // 护眼模式-必应
Style_BaiduLite: false, // Baidu_Lite样式表
defaultHuYanColor: "#DEF1EF",
isUserColorEnable: true, // 是否开启favicon图标功能
isFaviconEnable: true, // 是否开启favicon图标功能
defaultFaviconUrl: "https://ae01.alicdn.com/kf/HTB1dRY0X8OD3KVjSZFFq6An9pXay.jpg", // 默认图标地址
doDisableSug: true, // 是否禁止百度搜索预测
isRightDisplayEnable: false, // 是否开启右侧边栏
isCounterEnable: false, // 是否显示计数器
isALineEnable: false, // 是否禁止下划线
isUserStyleEnable: false, // 是否开启自定义样式
isEnLang: false,
isGooleInBaiduModeEnable: false, // 是否开启谷歌搜索结果页的百度图标显示
UserBlockList: [],
UserStyleText:
`/**计数器的颜色样式*/
div .AC-CounterT{
background: #FD9999;
}
/**右侧栏的样式-其实不开启更好看一些*/
#content_right{
padding: 20px 15px 15px;
border-radius: 5px;
background-color: #fff;
box-sizing: border-box;
box-shadow: 0 0 20px 2px rgba(0, 0, 0, .1);
-webkit-box-shadow: 0 0 20px 2px rgba(0, 0, 0, .1);
-moz-box-shadow: 0 0 20px 2px rgba(0, 0, 0, .1);
}
/****可以加一些自己的背景图片,替换引号内的内容为可外链的图片即可****/
body{
background-repeat: repeat-y;
background-size: 100%;
background-attachment:fixed;
background-image: url('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1564756277250&di=868b9eac9be14df1dedd8c7d6a710844&imgtype=0&src=http%3A%2F%2Fphotocdn.sohu.com%2F20130530%2FImg377502333.jpg');
}
/*****窗口背景的透明虚化效果*****/
body>#wrapper,body>.wrap,body>#main,body #appbar,body #hdtbSum{
background: rgba(225,225,225,0.8);
}
/**隐藏首页的大图标-修复可能导致外援样式异常**/
body[baidu] #s_lg_img_new{
display:none !important;
}
#wrapper #content_left .result, #wrapper #content_left .c-container{
border-radius: 5px;
}`,
oldVersion: "",
lastSaveTime: new Date().getTime(),
};
let CONST = {
hasNewFuncNeedDisplay: true,
sortIndex: 1,
isGoogleImageUrl: false,
AdsStyleMode: ACConfig.AdsStyleMode_Baidu,
keySite: "baidu",
StyleManger: function () {
},
curHosts: [],
};
let curSite = {
SiteTypeID: 1, // 当前站点的ID
MainType:"", // 主体节点,很多个的父节点
Stype_Normal: "", // 重定向选择器,只有百度-搜狗-好搜
FaviconType: "", // favicon的域名检查器cite,用于获取host用
FaviconAddTo: "", // favicon选择器,用于插入到title之前的
CounterType: "", // 计数器添加的位置,一般和favicon位置一致
BlockType: "", // 屏蔽按钮的位置,一般在title之后
};
let DBSite = {
baidu: {
SiteTypeID: 1,
MainType: "#content_left .c-container",
Stype_Normal: "h3.t>a, #results .c-container>.c-blocka",
FaviconType: ".result-op, .c-showurl", // baidu 似乎要改版了?
FaviconAddTo: "h3",
CounterType: "#content_left>#double>div[srcid] *[class~=t],[class~=op_best_answer_question],#content_left>div[srcid] *[class~=t],[class~=op_best_answer_question]",
BlockType: "h3 a",
pager:{
nextLink: '//div[@id="page"]/a[contains(text(),"下一页")][@href]',
pageElement: "css;div#content_left > *",
HT_insert: [ "css;div#content_left", 2 ],
replaceE: "css;#page",
stylish: ".autopagerize_page_info, div.sp-separator {margin-bottom: 10px !important;}",
}
},
sogou: {
SiteTypeID: 2,
MainType: "#main .results>div",
Stype_Normal: "h3.pt>a, h3.vrTitle>a",
FaviconType: "cite[id*='cacheresult_info_']",
FaviconAddTo: "h3",
CounterType: ".results>div",
BlockType: "h3 a",
pager:{
nextLink: "//div[@id=\"pagebar_container\"]/a[@id=\"sogou_next\"]",
pageElement: "//div[@class=\"results\"]",
HT_insert: ["//div[@class=\"results\"]", 2],
replaceE: "id(\"pagebar_container\")"
}
},
haosou: {
SiteTypeID: 3,
MainType: ".res-list",
Stype_Normal: ".res-list h3>a",
FaviconType: ".res-linkinfo cite",
FaviconAddTo: "h3",
CounterType: ".results>div",
BlockType: "h3 a",
pager:{
nextLink: "//div[@id=\"page\"]/a[text()=\"下一页>\"] | id(\"snext\")",
pageElement: "//div[@id=\"container\"]/div",
HT_insert: ["//div[@id=\"container\"]", 1],
replaceE: "id(\"page\")"
}
},
google: {
SiteTypeID: 4,
MainType: "#rso .g *[class~=rc]",
FaviconType: ".iUh30",
FaviconAddTo: "h3",
CounterType: "#rso .g *[class~=r] h3,._yE>div[class~=_kk] h3",
BlockType: ".rc>.r>a",
pager:{
nextLink: 'id("pnnext") | id("navbar navcnt nav")//td[span]/following-sibling::td[1]/a | id("nn")/parent::a',
pageElement: '//div[@id="res"]',
HT_insert: [ "css;#res", 2 ],
replaceE: '//div[@id="navcnt"] | //div[@id="foot"][@role="navigation"]'
}
},
bing: {
SiteTypeID: 5,
MainType: "#b_results>li",
FaviconType: ".b_attribution>cite",
FaviconAddTo: "h2",
CounterType: "#b_results>li[class~=b_ans]>h2,#b_results>li[class~=b_algo]>h2,#b_results>li[class~=b_algo]>h2",
BlockType: "h2 a",
pager:{
nextLink: "//a[contains(@class,\"sb_pagN\")]",
pageElement: "id(\"b_results\")/li[not(contains(@class,\"b_pag\") or contains(@class,\"b_ans b_top\"))]",
HT_insert: ["id(\"b_results\")/li[@class=\"b_pag\"]", 1],
replaceE: "id(\"b_results\")//nav[@role=\"navigation\"]",
}
},
mBaidu:{
SiteTypeID: 6,
MainType: "#b_results>li",
FaviconType: ".b_attribution>cite",
FaviconAddTo: "h2",
CounterType: "#b_results>li[class~=b_ans]>h2,#b_results>li[class~=b_algo]>h2,#b_results>li[class~=b_algo]>h2",
BlockType: "h2 a",
},
zhihu: {
SiteTypeID: 7,
},
baidu_xueshu:{
SiteTypeID: 8,
MainType: "#content_left .result",
Stype_Normal: "h3.t>a, #results .c-container>.c-blocka",
FaviconType: ".result-op, .c-showurl", // baidu 似乎要改版了?
FaviconAddTo: "h3",
CounterType: "#content_left>#double>div[srcid] *[class~=t],[class~=op_best_answer_question],#content_left>div[srcid] *[class~=t],[class~=op_best_answer_question]",
BlockType: "h3 a",
},
other: {
SiteTypeID: 9,
}
};
let SiteType = {
BAIDU: DBSite.baidu.SiteTypeID,
MBAIDU: DBSite.mBaidu.SiteTypeID,
SOGOU: DBSite.sogou.SiteTypeID,
SO: DBSite.haosou.SiteTypeID,
GOOGLE: DBSite.google.SiteTypeID,
BING: DBSite.bing.SiteTypeID,
ZHIHU: DBSite.zhihu.SiteTypeID,
BAIDU_XUESHU: DBSite.baidu_xueshu.SiteTypeID,
OTHERS: 8
};
/**初始化所有的设置**/
Promise.all([GM.getValue("Config")]).then(function (data) {
if (data[0] != null) {
try{
ACConfig = JSON.parse(data[0]);
}catch (e) {
ACConfig = data[0];
}
} else {
ACConfig = DefaultConfig;
}
for(var key in DefaultConfig){
if(typeof(ACConfig[key]) == "undefined"){
ACConfig[key] = DefaultConfig[key];
}
}
if(ACConfig.isUserStyleEnable == false && (new Date().getTime() - ACConfig.lastSaveTime > 2592000000)){
// 大约30天时间
// 如果用户取消了设置,并且长时间(3天)没有进行过处理,那么直接将数据置空 -> 用于刷新数据
console.log("ac-baidu css reset for time");
ACConfig.lastSaveTime = new Date().getTime();
ACConfig.UserStyleText = DefaultConfig.UserStyleText;
}
useCNLan = !ACConfig.isEnLang;
// 初始化完成之后才能调用正常函数
callback();
}).catch(function (except) {
console.log(except);
});
function Reg_Get(HTML, reg) {
let RegE = new RegExp(reg);
try {
return RegE.exec(HTML)[1];
} catch (e) {
return "";
}
}
function getElementByXpath(e, t, r) {
r = r || document, t = t || r;
try {
return r.evaluate(e, t, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
} catch (t) {
return void console.error("无效的xpath");
}
}
function getAllElementsByXpath(e, t, r) {
return r = r || document, t = t || r, r.evaluate(e, t, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}
function getAllElements(e, t, r, n, o) {
var i, s = [];
if (!e) return s;
if (r = r || document, n = n || window, o = o || void 0, t = t || r, "string" == typeof e) i = 0 === e.search(/^css;/i) ? function getAllElementsByCSS(e, t) {
return (t || document).querySelectorAll(e);
}(e.slice(4), t) : getAllElementsByXpath(e, t, r); else {
if (!(i = e(r, n, o))) return s;
if (i.nodeType) return s[0] = i, s;
}
return function makeArray(e) {
var t, r, n, o = [];
if (e.pop) {
for (t = 0, r = e.length; t < r; t++) (n = e[t]) && (n.nodeType ? o.push(n) : o = o.concat(makeArray(n)));
return a()(o);
}
if (e.item) {
for (t = e.length; t; ) o[--t] = e[t];
return o;
}
if (e.iterateNext) {
for (t = e.snapshotLength; t; ) o[--t] = e.snapshotItem(t);
return o;
}
}(i);
}
function callback() {
if (ACConfig.oldVersion == GM_info.script.version) {
CONST.hasNewFuncNeedDisplay = false;
} else {
CONST.hasNewFuncNeedDisplay = needDisplayNewFun;
}
!function () {
let BaiduVersion = " V" + GM_info.script.version;
let insertLocked = false;
if(GM_getResourceText){
// 仅在支持GM_getResourceText的容器上进行动态数据更新
// 且能防止谷歌百度页面规则大变动又需要更新脚本 - 特别是涉及翻页参数
let config = GM_getResourceText("SiteConfigRules");
eval(config);
if(typeof(onlineDB) != "undefined") DBSite = onlineDB;
}
if (location.host.indexOf("xueshu.baidu.com") > -1) {
curSite = DBSite.baidu_xueshu;
}else if (location.host.indexOf(".baidu.com") > -1) {
if(navigator.userAgent.replace(/(android|mobile|iphone)/igm, "") != navigator.userAgent){
curSite = DBSite.mBaidu;
}else{
curSite = DBSite.baidu;
}
} else if (location.host.indexOf("zhihu.com") > -1) {
curSite = DBSite.zhihu;
} else if (location.host.indexOf("sogou") > -1) {
curSite = DBSite.sogou;
} else if (location.host.indexOf("so.com") > -1) {
curSite = DBSite.haosou;
} else if (location.host.indexOf("google") > -1) {
curSite = DBSite.google;
} else if (location.host.indexOf("bing") > -1) {
curSite = DBSite.bing;
}else {
curSite = DBSite.other;
}
curSite.pageNum = 1; // 当前页数
curSite.pageLoading = false;
curSite.pageUrl = "";
if (curSite.SiteTypeID == SiteType.GOOGLE && location.href.replace(/tbm=(isch|lcl|shop|flm)/, "") != location.href) {
// 图片站 、地图站、购物站
console.log("特殊站,不加载样式,不添加menu");
CONST.isGoogleImageUrl = true;
}
if (ACConfig.AdsStyleEnable) {
if (curSite.SiteTypeID == SiteType.BAIDU) {
CONST.AdsStyleMode = ACConfig.AdsStyleMode_Baidu;
CONST.HuYanMode = ACConfig.HuYan_Baidu;
CONST.keySite = "baidu";
} else if (curSite.SiteTypeID == SiteType.GOOGLE) {
CONST.AdsStyleMode = ACConfig.AdsStyleMode_Google;
CONST.HuYanMode = ACConfig.HuYan_Google;
CONST.keySite = "google";
} else if (curSite.SiteTypeID == SiteType.BING) {
CONST.AdsStyleMode = ACConfig.AdsStyleMode_Bing;
CONST.HuYanMode = ACConfig.HuYan_Bing;
CONST.keySite = "bing";
} else if (curSite.SiteTypeID == SiteType.SOGOU){
CONST.AdsStyleMode = ACConfig.AdsStyleMode_SoGou;
CONST.HuYanMode = ACConfig.HuYan_SoGou;
CONST.keySite = "sogou";
} else if(curSite.SiteTypeID == SiteType.BAIDU_XUESHU){
CONST.AdsStyleMode = 2; // 单列居中即可
}
CONST.StyleManger = FSBaidu(); // 添加设置项-单双列显示
}
console.log("%c[AC-Redirect] %cLet Me Introduce you a Very Good Search Engine:%c %s %cSearch Engine.", "font-weight:bold;color:cornflowerblue", "color:0", "font-weight:bold;color:darkorange", CONST.keySite.replace(CONST.keySite[0],CONST.keySite[0].toUpperCase()), "font-weight:normal;color:0");
let bodyNameresetTimer = setInterval(function () {
if (document.body != null) {
document.body.setAttribute(CONST.keySite, "1");
if (curSite.SiteTypeID == SiteType.BAIDU && location.href.indexOf("tn=news") >= 0) {
document.body.setAttribute("news", "1");
}else{
document.body.removeAttribute("news");
}
// clearInterval(bodyNameresetTimer);
}
}, 300);
let SiteBlock = {
/**
* 初始化Block样式
*/
initStyle: function(){
AC_addStyle("button.ghhider.ghhb[ac-user-alter='1']::before{content:'取消 - ';}#sp-ac-container .ac-block-item{color:#AAA;margin-left:48px;}#sp-ac-container .ac-block-itemdel{float:right;margin-left:0;padding:0 20px;cursor:pointer;}#sp-ac-container .ac-block-itemdel:hover{color:red;}#sp-ac-container .ac-block-high{color:#000;}.ac-blockList li:hover{background-color:#a3caff;color:white !important;cursor:pointer;} *[ac-needhide] *{display:none} *[ac-needhide] .blockShow{display:unset;cursor:pointer;} *[ac-needhide] .blockShow:hover{border:1px solid #DDD}button.ghhider{color:#555;background-color:#fcfcfc;font-family:sans-serif;font-size:.85em;margin:auto 2px;border:1px solid #ccc;border-radius:4px;padding:2px 3px}h3>button.ghhider{font-size:.75em}button.ghhider:hover{color:#006aff;background:#fff}",
"AC-BlockStyle");
},
/**
* 初始化屏蔽按钮加载
*/
init: function () {
let checkNodes = document.querySelectorAll(curSite.MainType+":not([acblock])");
for (let i = 0; i < checkNodes.length; i++) {
try{
let curNode = checkNodes[i];
let faviconNode = curNode.querySelector(curSite.FaviconType);
// if(curNode.hasAttribute("acblock")) continue;
let host = getBaiduHost(faviconNode);
// if(host == null) continue;
let faNode = curNode.querySelector(curSite.BlockType);
let nodeStyle = "display:unset;";
if(!ACConfig.isBlockBtnDisplay){
nodeStyle = "display:none;";
}
faNode.insertAdjacentHTML("afterend", `<button style='${
nodeStyle}' class='ghhider ghhb' href="${
faviconNode.href || faviconNode.innerText}" meta="${
host}" data-host="${
host}" title='点击即可屏蔽 ${
host} 放开,需要在自定义中手动配置放开'>block</button>`);
curNode.setAttribute("acblock", "0");
curNode.setAttribute("acblock", "0");
}catch (e) {
}
}
this.initListener();
this.renderDisplay();
},
initListener: function(){
let checkNodes = document.querySelectorAll("button.ghhider:not([acEnv])");
for(let i = 0; i < checkNodes.length; i++){
checkNodes[i].addEventListener("click", this.doHideEnv);
checkNodes[i].setAttribute("acEnv", "0");
}
},
doHideEnv: function(env){
// 先插入数据---记得还要写入存储
let node = env.sourceTarget || env.target;
let host = node.dataset.host;
if(node.getAttribute("ac-user-alter") == 1){
// 已经屏蔽之后,再次点击block应该是取消状态
node.removeAttribute("ac-user-alter");
ACConfig.UserBlockList.acremove(host);
GM.setValue("Config", JSON.stringify(ACConfig)); // 点击一次,保存一次
}else{
// 正常屏蔽操作
node.removeAttribute("ac-user-alter");
ACConfig.UserBlockList.acpush(host);
GM.setValue("Config", JSON.stringify(ACConfig)); // 点击一次,保存一次
}
reloadBlockList();
SiteBlock.renderDisplay();
env.stopPropagation();
},
// 刷新显示效果--耗时操作
renderDisplay: function(){
let checkNodes = document.querySelectorAll(curSite.MainType);
let flag = "ac-needhide";
for (let i = 0; i < checkNodes.length; i++) {
try{
let curNode = checkNodes[i];
let curHost = getBaiduHost(curNode.querySelector(curSite.FaviconType));
if(curHost == null) continue;
{
let BlockBtn = curNode.querySelector(".ghhider.ghhb");
BlockBtn.dataset.host = BlockBtn.dataset.meta = curHost;
}
if(curNode.querySelector("button[ac-user-alter]") != null) continue; // 用户手动点过显示的,那么跳过check
if(ACConfig.UserBlockList.findIndex(
m => {
try {
return new RegExp(m.replace