本站不兼容 8 以前的版本的 Interner Explorer 浏览器(或基于这些版本的 IE 的其他浏览器),并且页面样式不完全兼容 IE 8,我们建议你升级至 IE 9 或改用其他非 IE 浏览器

Mozest™

  • 正在加载用户菜单…

开放、分享、互助

感谢跟新
本帖最后由 baizuo 于 2014-3-29 19:46 编辑

1863# SeaHOH

这样虽然方便了一般的替换,但是也限制了自由性呀
可以这样子:
  1.             newURL = pa3;
  2.             newURL.match(">>")&&(newURL=function(p){return aSubject.URI.spec.replace(p[1],p[2])}(newURL.split(">>")));
  3.             newURL.match(">\\*")&&(newURL=function(p){var pp=p[1].split(",*");return aSubject.URI.spec.replace(RegExp(pp[0],(pp[1]||"").match(/^(?:g|i|ig|gi)$/)||""),p[2])}(newURL.split(">*")));
  4.             /^http:\/\/\s*{/.test(newURL) && (newURL = new Function("url", newURL.substr(7))(aSubject.URI.spec);)
复制代码
只需要在下面简单地加上一行,就能同时兼容函数写法。
上面的最后一行是我自己用的写法,也可以直接用紫云飞的方法,即,上面的
  1.             /^http:\/\/\s*{/.test(newURL) && (newURL = new Function("url", newURL.substr(7))(aSubject.URI.spec);)
复制代码
可以替换
  1. /^http:\/\/function\s*\(/.test(newURL)&&(newURL=eval("newURL="+newURL .replace(/^http:../,""))(aSubject.URI.spec));
复制代码
对比如下:

我的方法 紫云飞的方法
语法 http://{/*函数体,接受一个参数名为url的请求地址参数,返回新的地址*/} http://function(/*参数*/){/*函数体,接受一个请求地址的参数,返回新的地址*/}
优点 使用Function构造函数,变量局部化,不用写function,稍微方便一些 可以自定义函数签名
缺点 不能自定义函数签名,只能接受一个名字固定为url的参数 使用eval方法,可能会造成参数污染

这样,同样的一个“把百度的baidu替换为baisb”的任务,就可以使用多种方法来写:(如果我对你的语法没理解错的话)
  1. http://>>baidu>>baisb
复制代码
  1. http://>*(bai)du>*$1sb
复制代码
  1. http://{return url.replace("du","sb");} /*我的版本*/
复制代码
  1. http://function(a){return a.replace("du","sb");} /*紫云飞版*/
复制代码
*******


另外,29beta上,把脚本拖进浏览器时mason无法识别了;从界面选取“导入>安装mason脚本”也没反应了,怎么办?
1892# baizuo
我弃用 eval 方法的理由就是怕有人会构造恶意代码,虽然这种可能几乎为零(这些修改版用户太少)。
new Function 方法同样如此。
我觉得正则已经能应付绝大多数问题了,但是直接量符 $ 后面是数字可能就不行了吧(没遇到过就没做处理)。
要用条件判断的话 mason 本身就支持,如果没有你需要的变量可以很方便的修改源代码添加。
*不论美丑善恶,我会代你言说真实的生命。  —— 死者代言人
瞎扯一句:mozilla 对待兼容性的态度和做法我是很不喜欢的,苦了开发者,也没方便到用户。
*不论美丑善恶,我会代你言说真实的生命。  —— 死者代言人
本帖最后由 baizuo 于 2014-3-31 16:58 编辑

1893# SeaHOH
要用条件判断的话 mason 本身就支持,如果没有你需要的变量可以很方便的修改源代码添加。
这个是什么意思?没有看懂……

*****

刚才试了一下,又能安装脚本了,完全不知道为什么  (;°Д°)???
1895# baizuo
fctlite-detailWindow.js 第51行开始
anotherCond.appendItem(  header  ,   sname  );
*不论美丑善恶,我会代你言说真实的生命。  —— 死者代言人
本帖最后由 pighead123 于 2014-5-2 01:57 编辑

1896# SeaHOH

大神你好,用了你的版本和原版,发现一个问题

附加条件 referer 无论怎么写,都无效,能否修正一下这个bug

firefox 26

发现问题了 好像是特殊的url才无法识别

比如 dz 论坛的 upload.js?sql

真是奇怪
本帖最后由 SeaHOH 于 2014-5-2 18:26 编辑 1897# pighead123
犯了个错,代码里把 referrer 改成 referer 了,当时完全不懂还以为作者写错了。
之后虽然知道了,但是自己也没用过,所以……
既然有人觉察到了——好吧,我现在就改
点此跳转下载
*不论美丑善恶,我会代你言说真实的生命。  —— 死者代言人
1892# baizuo
完全不行啊!像你这样加个一句后.不管用正则还是你这个都不起作用了啊!
1898# SeaHOH

用了修改版的无论怎样都无法重定向 ,>>qq>>hao123 规则无效,用原版的有效

    <mason>
    Charset=gb2312
    Author=myfox1900
    Created=2009/07/07
    Updated=
    Version=1.0
    Website=
    Comment=
    Description=qq
    Usage=
    Url=^http://(www\.)?qq\.com/
    </mason>
    <parts>
    part1=.@@@L3
    </parts>
    <part1>
>>qq>>hao123
    </part1>
原版 调用正常

function _masonRedirect(spec){
return spec.replace("qq", "hao123");
}
这样也不行   
<part1>
function _masonRedirect(spec){
>>qq>>hao123
}
    </part1>
这样好像,修改版跟原版没有区别呀。。。
1903# pighead123
脚本里继续用原方法就好了。
这个修改原本就是为了方便写一句话规则(选重定向功能)。
*不论美丑善恶,我会代你言说真实的生命。  —— 死者代言人
1904# SeaHOH

哦 好明白了
5年过去,又用回FF了,看到熟悉的扩展mason
想问下,现有的规则都是集成在扩展里了么,还是要翻贴找
这么好的扩展可惜一直没更新了,幸好也还没失效,目前还用着
作者好久没更新了,人呢
本帖最后由 vokins 于 2014-11-15 10:54 编辑




本帖最后由 vokins 于 2014-11-15 10:59 编辑
















本帖最后由 vokins 于 2014-11-15 11:12 编辑








@水鑫日  https://www.firefox.net.cn/read-50171   求更新
1863# SeaHOH
给个赞,多谢水大侠修改版,让重定向轻松多了
3.7.18 会导致FF崩溃
现在相当程度上的不能用了……