Page 1 of 2

利用UserScript自动把繁体中文网页转换为简体中文

Posted: Jan 20 2008, 17:34
by augor

Code: Select all

[Patterns]
Name = "!_转换为简体"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 80
Match = "(<meta[^>]++content=$AV(zh-tw))\1$SET(isCHT=1)$SET(0=\1)|"
        "(<meta[^>]++content=$AV(*charset=big5))\1$SET(isCHT=1)$SET(0=\1)|"
        "</body>$TST($GET(isCHT)=1)$SET(0=<script src="http://local.ptron/Simplized.js"></script></body>)"
Replace = "\0"
代码解释:
1. 如果 content="zh-tw" 或 charset=big5,就把变量"isCHT"值设为1( $SET(isCHT=1) )
2. 判断"isCHT"是否为1( $TST($GET(isCHT)=1) ),如果是,则在"</body>"前添加<script src="http://local.ptron/Simplized.js"></script>

即判断网页的meta标签是否含有content="zh-tw"或charset=big5,如果有,则调用脚本Simplized.js把繁体转为简体


附件为Simplized.js,下载后放在 "Proxomitron程序目录/html/" 目录内。要放在其它位置,自己修改路径。
IE7似乎限制自动调用本地脚本文件(file://开头),所以推荐放在"/html/"目录下,用"http://local.ptron/..."地址调用。
(参考http://msdn2.microsoft.com/zh-cn/library/ms649488.aspx)

为了防止不同编码的网页载入脚本出错,Simplized.js内的汉字用escape()编码过。要研究代码,请用unescape()解码。

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Jan 20 2008, 19:53
by phoenix
@augor,谢谢分享,我稍微做了些改动,你看看如何:

Code: Select all

[Patterns]
Name = "!_转换为简体"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 80
Match = "(<meta[^>]++content=$AV(zh-tw|*charset=big5))\0$SET(isCHT=1)|"
        "(^(^</body>))$TST(isCHT=1)$SET(0=<script src="http://local.ptron/Simplized.js"></script>\r\n)$SET(isCHT=)$STOP()"
Replace = "\0"
  1. 将对“zh-tw”和“*charset=big5”的判断合并
  2. 将meta属性直接赋予\0,而不是通过\1中转
  3. 最后通过$SET(isCHT=)将isCHT变量释放

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Jan 20 2008, 20:36
by augor
谢谢phoenix,你的代码精简多了...

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Jan 21 2008, 09:41
by Ray4
感谢分享,之前一直就在找类似的东西,只怪自己不懂脚本,嘿嘿,现在有现在的了

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Sep 06 2009, 19:40
by 不夜侯
不适用这个网页:http://www.pczone.com.tw/vbb3/thread/7/60829/
源代码语言部分如下:

Code: Select all

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="zh-TW">
需要修改一下规则:

Code: Select all

[Patterns]
Name = "!_转换为简体"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 80
Match = "((<html[^>]++lang=$AV(zh-tw)>)|(<meta[^>]++content=$AV(zh-tw|*charset=big5)))\0$SET(isCHT=1)|"
        "(^(^</body>))$TST(isCHT=1)$SET(0=<script src="http://local.ptron/Simplized.js"></script>\r\n)$SET(isCHT=)$STOP()"
Replace = "\0"


Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Sep 21 2009, 08:35
by gaogao9988
多谢,这个对我很有用。可惜不支持utf-8。

请教phoenix,你为什么要这么写 (^(^</body>)) ,而不是直接 </body>

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Sep 21 2009, 22:52
by phoenix
gaogao9988 wrote: 请教phoenix,你为什么要这么写 (^(^</body>)) ,而不是直接 </body>
(^(^</body>)) ,匹配 </body> 之前那个位置

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Sep 23 2009, 09:15
by gaogao9988
谢谢,单看写法还真比较难理解。

真是爱死Proxomitron了,想怎么搞就怎么搞,真爽,我自己定制了好些经常去的网站。

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Jun 13 2011, 19:35
by funnyPC
为什么添加这个规则以后,源码中的</body>就变成了</old-body>?再添加其他在body前插入的js就匹配不到了。

Re: 利用UserScript自动把繁体中文网页转换为简体中文

Posted: Jun 14 2011, 14:54
by phoenix
本规则并不改变 </body> 标签,或许是你用的其他规则的原因?