初涉 GreaseMonkey, 兼探其与 Opera UsersJS 的不同

GreaseMonkey装在FF上有段时间了,一直处于禁用状态
前几天和香草山讨论浏览器插件,提到了这只猴子,抽空测试了一下


对GM有了个大体的印象:

 

这个东东本质上就是块JS
它通过浏览器这个层面,在解析完页面之后,往页面里丢进去一块js让其运行
这块js运行的时候,可以对页面中的DOM进行增删改查的操作,由此实现用户想要的一些效果。

可能是出于安全性的考虑,GM的js似乎有自己单独的空间(sand-box?)
不能直接修改原页面的JS变量和函数,除非使用unsafeWindow来改变原页面的变量和函数

 

因为这个原因,我无法修复原网页加载过程中出现的错误以及导致的一些未定义变量
而且那些加载过程中的动作我也无法控制。

 

关于unsafeWindow,参考:
http://suddymail.org/show-165-1.html
http://lifegoo.pluskid.org/?p=113

 

这个难题目前我还没找到解决的方法,不过Opera给了我一点希望。。。

 

opera的USERJS

 

operachina是这样描述USERJS的执行原理的:

 

浏览器在加载页面时,网页、脚本、样式,及图片等相继被加载。但是,当页面中的首个脚本被执行前,用户脚本就已经被执行了。由于它是最早执行被执行的脚本,所以它获得的控制权就比较早,它可以:

* 决定所浏览页面中,哪些外部 JavaScript 文件可以被加载;
* 改写所加载网页中的任何脚本(<script>)块代码;
* 拦截页面上正在被检测的事件,以此改变事件的处理方式;
* 替换网页脚本中定义的变量和函数;

除此之外,用户脚本做为所浏览网页的一部分,当然也能完成网页自身脚本所能完成的功能。包括,检测事件、创建变量、创建函数,并且读取所应用到页面的 Cookie 等。用户脚本能拥有如此高的控制权,完全依赖于它是从 Opera 内核进行支持的,并且通过这种特性所获得的能力,同样被扩展到了 Opera Mini 及 Opera Mobile 平台上。

 

根据它这里的描述,用户脚本是在页面加载前被执行的,所以能够在加载前做些事情

 

但是进而一想,这也不对啊,用户脚本先执行,事儿倒是干了,但是刚才初始化的变量、函数,待会儿不还是给页面里的同名变量、函数给覆盖掉了。

 

Opera的设计者当然想到了这点,所以提供了很多相关的接口,比如下面这两个:


window.opera.defineMagicVariable(targetVariableName, fun1,fun2)

window.opera.defineMagicFunction(targetFunctionName,fun1)

 

这两个“魔术接口”的详情我不转贴过来了,我还没研究清楚的东西就先不贴。

有兴趣的可以点击这里前往观看。

 

 

我想,我的难题也许可以通过这几个接口,在Opera上得到解决?

 

抽空继续研究中。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过使用少量的JavaScript脚本,自定义网页显示方式或表现方式。Greasemonkey是Mozilla Firefox的一个附加组件。它让用户安装一些脚本使大部分HTML为主的网页于用户端直接改变得更方便易用。随着Greasemonkey脚本常驻于浏览器,每次随着目的网页打开而自动做修改,使得运行脚本的用户印象深刻地享受其固定便利性。 技术明细: 大部分Greasemonkey用户脚本都是自行撰写,使用对某网站专用的JavaScript代码,通过文档对象模型(DOM)接口对网页内容做操作。userscripts.org维护了个Greasemonkey数据库。该数据库描述哪个网址网页对应到哪个脚本。当用户加载匹配的网页,Greasemonkey便调用相关的脚本,而该脚本便根据脚本内容改变网页的内容。Greasemonkey脚本亦能通过非网域绑定的XMLHTTP要求来查询外部HTTP资源。Greasemonkey亦遵循某用户名.user.js的格式,这让当该特定用户拜访时Greasemonkey可自动侦测并提供安装选项。除了JavaScript代码,Greasemonkey脚本包括有限可选用后数据集。该后数据集描述了脚本名称、脚本描述、网址用来区分同名脚本的地址空间、以及原本该脚本为哪些网址撰写的列表。Greasefire扩展:同Greasemonkey扩展配合使用,自动显示在userscripts.org的脚本库中是否存在可以在当前正在浏览网站上使用的脚本,如果存在Greasemonkey的猴头图标背景就会变为彩色的。右键点击猴头图标,最上面一行就是打开当前网站可用脚本列表的选项。Platypus(platypus.mozdev.org)附加组件可让用户可以编辑网页(删除或者移动某碍眼的部分)。Platypus随后将结果存成常驻的Greasemonkey脚本。 典型的脚本: 用户群已发展大量的脚本,以下是其中的一些应用:调整Gmail让Google Reader内嵌,因而提供RSS新闻订阅的选项。当联机浏览某本书时同时显示对手网站同本书价钱。去除来自某些站的广告,包括弹出视窗与Google文字广告。改变网页的版面,包括原本该网页作者未考虑到的元素大小与浏览器画面大小。自动完成窗体。浏览某些布告栏网站自动过滤特定的发帖人。增删网页上的某些功能。让用户从某些视频站点如Google Video以及YouTube存下FLV视频文件。从现行网页找寻任何RSS新闻订阅,并将它们显示在可扩展、漂浮于网页上的皮肤里。突破百度贴吧对言论内容的管制,辅助发表繁体汉字及不受贴吧服务器支持的字符,或者将文字转换为图片发表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值