[url=/blog/792007]前面[/url]
发了一段JS代码+keyconfig插件用于跳出电信广告嵌套,但每次还是要自己去操作,蛮麻烦的。
今天突然想起Greasemonkey这个插件可以在指定的站点上运行自定义JS代码,于是上网简略查了下,参照[url=http://www.ibm.com/developerworks/cn/opensource/os-cn-greasemonkey/index.html]这篇文章[/url]
,新建了一个脚本,定义目标为所有网站:
[color=red](删除)[/color][color=gray]脚本里使用了setTimeout来进行刷新,这是因为测试时直接操作location发现无效。可能与脚本执行时机有关吧?在网上没有查到相关资料,简单地改下,使它在下个任务中执行就成功了。[/color]
如果访问到某个站点检测出有电信的iframe嵌套,就自动跳出去,效果不错哦!
注意:以上代码是针对深圳电信adsl的,可能对其它地区的无效(根据网上帖出来的样本看,各地的实现好像都不一样),所以需要适当DIY了。
---------------------2010/11/01补充----------------
前面关于setTimeout的说明是错误的…… 刚才发现电信的广告框架,初始时iframe是没有src的,而是在脚本中进行赋值。
所以代码有部分修改。
发了一段JS代码+keyconfig插件用于跳出电信广告嵌套,但每次还是要自己去操作,蛮麻烦的。
今天突然想起Greasemonkey这个插件可以在指定的站点上运行自定义JS代码,于是上网简略查了下,参照[url=http://www.ibm.com/developerworks/cn/opensource/os-cn-greasemonkey/index.html]这篇文章[/url]
,新建了一个脚本,定义目标为所有网站:
// ==UserScript==
// @name China Telecom sucks
// @namespace adsucks
// @description 狗日的电信广告
// @include http://*
// ==/UserScript==
//2010/11/01重写了实现
//function getRealUrl(){
// var iframe = document.getElementById('fulliframe');
// if(iframe && iframe.tagName === "IFRAME"){
// return iframe.src;
// }else if(window.old_url){
// return window.old_url;
// }
// return null;
//}
//
//var url = getRealUrl();
//if(url){
// setTimeout(function(){
// window.location.href = url;
// }, 0);
//}
function isADInjected(){
var f, url = location.href;
if(window.old_url && old_url === url){
return true;
}else if((f=document.getElementById("fulliframe")) && f.tagName === "IFRAME" && f.name === "fulliframe"){
return true;
}
return false;
}
if(isADInjected()){
location.href = location.href;
}
[color=red](删除)[/color][color=gray]脚本里使用了setTimeout来进行刷新,这是因为测试时直接操作location发现无效。可能与脚本执行时机有关吧?在网上没有查到相关资料,简单地改下,使它在下个任务中执行就成功了。[/color]
如果访问到某个站点检测出有电信的iframe嵌套,就自动跳出去,效果不错哦!
注意:以上代码是针对深圳电信adsl的,可能对其它地区的无效(根据网上帖出来的样本看,各地的实现好像都不一样),所以需要适当DIY了。
---------------------2010/11/01补充----------------
前面关于setTimeout的说明是错误的…… 刚才发现电信的广告框架,初始时iframe是没有src的,而是在脚本中进行赋值。
所以代码有部分修改。