当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [转帖]让你的opera没有浮动广告,把真正的清爽带给你
帖子发表于 : 2005-09-21 0:03 
头像

注册: 2005-09-14 21:39
帖子: 195
送出感谢: 0 次
接收感谢: 0 次
原文链接:
http://my.opera.com/chinese/forums/topic.dml?id=98685

作者:niltsh
版权归作者所有,本文系转载,如果作者认为此帖侵犯了作者版权,请email版主,将此帖删除

原文:

脚本原文:

代码:
var keyadex = new Array(/[^oe]ad[^d]/i, /cn\.yimg\.com/i, /icast/i);


var keyadin = new Array(/[^\/]\/ad[^dj]/i, /[a-df-np-z]ad[^a-z=\/-]/i, /[^a-z\/,\s]ad[^dj]/i);




var blist = new Array();




var wlist = new Array(/mail\.yahoo/i);




var dbg = 0;


function IsAD(str, flag)


{


  var keyad;


  if ( flag )


    keyad = keyadex ;


  else


    keyad = keyadin ;




  for (var i = 0; i < keyad.length; i++) {


    if (keyad.test(str) == true)


    return 1;


  }


  return 0;


}




function filterex(e)


{


  for (var i = 0; i < blist.length; i++) {


    if (blist.test(location.host) == true) {


      e.preventDefault();


      return;


    }


  }


 


  var addr=e.element.getAttribute("src");


  if (IsAD(addr, 1)){


    e.preventDefault();


    if (dbg) {


      alert("banex"+addr);


      return;


    }


  }


  if (dbg)


    alert("threx"+addr);


}




function filterin(e)


{


  for (var i = 0; i < wlist.length; i++) {


    if (wlist.test(location.host) == true)


      return;


  }




  var tsc = e.element.text;


  if ( IsAD(tsc, 0) ) {


    e.preventDefault();


    if (dbg) {


      alert("banin"+tsc);


      return;


    }


  }


  if (dbg)


    alert("thrin "+tsc);


}




window.opera.addEventListener( 'BeforeExternalScript', filterex, false);


window.opera.addEventListener( 'BeforeScript', filterin, false);


2.源码说明
有两种event驱动,一种是脚本的源代码,另外一种是外部脚本的url,都会引发event
也就是说,对于本身网页内脚本,只需要通过filterin的过滤;但是对于有src属性的外部脚本,会首先考察src(filterex函数过滤),如果url的地址通过的话,opera就会得到这个脚本的源代码,这个时候就还要再进行源代码的过滤。
过滤就是靠关键字,都是用正则表达,分别保存在keyadex和keyadin中。
另外,加入黑名单和白名单。
对于黑名单,只用来控制外部脚本,对于来自黑名单的外部脚本,一律无视,全部打倒。
对于白名单,只用来控制内部脚本,对于来自白名单的外部脚本,一律无视,全部通过。这个用来对付那种把广告脚本和网页内容脚本写一块的网站,比如mail.yahoo.com
变量 var dbg是用来控制是否产生输出,=1的话,哪个脚本是否通过,是否拦截都能看到了。
3.配置指导
ctrl+f12→高级→内容→java脚本选项→用户脚本指定脚本所在目录就可以了
4.使用结果及感想
效果还是明显的,能拦截到很多广告脚本,
但是 过滤js的脚本 毕竟只是一个结构上的filter,对于细节的精雕细琢还是不行,

不过如果是按照opera所说的,那么过滤外部脚本应该还是对浏览速度有所帮助的,因为filter是发生在脚本下载之前。

希望达人体意见,因为鄙人学javascript还不到一周,很多东西都不知道。

现在顺便先问一个,DOM2里面load事件是发生在load已经完成将要生效的时候,有没有哪个event是发生在load之前的?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2005-09-21 0:08 
头像

注册: 2005-09-14 21:39
帖子: 195
送出感谢: 0 次
接收感谢: 0 次
我还没来得及实验呢

不过看原理 觉得应该好用

大家来试试opera吧

新的8.5已经免费,现在又可以实现很多ff的功能

如果那个脚本还有可以进步的地方,咱们论坛的高手可以也研究一下啊

还有个网站:

http://userjs.org 好像是专门研究opera的userjs的

不错的 东西 大家看看


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2005-09-21 0:15 
头像

注册: 2005-09-14 21:39
帖子: 195
送出感谢: 0 次
接收感谢: 0 次
还有另外一个方法,就是css过滤

我就不转贴了 给个网址 大家看看

http://nontroppo.org/wiki/BlockAdvertisements


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2005-09-21 0:22 
头像

注册: 2005-09-14 21:39
帖子: 195
送出感谢: 0 次
接收感谢: 0 次
另外说一下他的正则表达式的规则,便于大家自己扩展

拿咱们论坛来说:forum.ubuntu.org.cn

整个屏蔽的网址都写在 //i中的/和/中

这样如果要屏蔽论坛的话 就是这样:

/forum\.ubuntu\.org\.cn/i

很简单吧 这里的\.类似于c中的转义字符,就是说要把它特殊标记出来,便于识别

这样你就可以把很多自己遇到的浮动广告加进去了,其实这个本身已经可以过滤很多了,不过为以防万一,还是会自己扩展比较好

好累啊 我去睡觉了

希望对大家都点用


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2005-09-28 18:50 

注册: 2005-09-26 23:54
帖子: 10
送出感谢: 0 次
接收感谢: 0 次
一直用Opera,太喜欢了,这东西看来不错,先收藏了。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2005-09-28 23:28 
头像

注册: 2005-08-14 21:55
帖子: 58436
地址: 长沙
送出感谢: 4
接收感谢: 272
这个收藏?现在8.5都没有广告啊。


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2005-09-29 9:41 
头像

注册: 2005-09-14 21:39
帖子: 195
送出感谢: 0 次
接收感谢: 0 次
呵呵 eexpress兄误会了

是指让opera在浏览网页时,不显示那些网页里的烦人的浮动广告,不是opera的自己的广告的 :)


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2005-09-29 12:12 

注册: 2005-05-07 23:57
帖子: 3025
送出感谢: 0 次
接收感谢: 0 次
eexpress 是快枪手 :P


_________________
独自看一看大海
总想起身边走在路上的朋友
Lenovo E290-420[Celeron-M420/256M/60G/Intel GMA950]


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2005-09-29 13:14 
头像

注册: 2005-08-14 21:55
帖子: 58436
地址: 长沙
送出感谢: 4
接收感谢: 272
哦。有时候是快了点。不过说道广告,确实看过有opera的一个wiki网站上有配置方法。


_________________
● 鸣学


页首
 用户资料  
 
10 楼 
 文章标题 : Re: [转帖]让你的opera没有浮动广告,把真正的清爽带给你
帖子发表于 : 2009-08-22 23:48 

注册: 2008-10-21 13:19
帖子: 90
送出感谢: 0 次
接收感谢: 0 次
opera的广告过滤还是弱了些。许多设置需要自己动手来,像css或是js过滤.在win下还有些工具可以使用,而linux下只能一个网站一个来弄。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: [转帖]让你的opera没有浮动广告,把真正的清爽带给你
帖子发表于 : 2009-08-22 23:58 
头像

注册: 2007-05-06 2:46
帖子: 15639
送出感谢: 0 次
接收感谢: 2
老天爷,05年的坟头

不是有现成的规则包嘛
:em20


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译