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

普遍适用的规则分享、讨论

Moderator: phoenix

augor
Posts: 6
Joined: Jan 07 2008, 19:34

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

Post 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()解码。
Attachments
Simplized_js.rar
(12.41 KiB) Downloaded 1359 times
User avatar
phoenix
Site Admin
Posts: 526
Joined: Dec 29 2007, 16:27

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

Post 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变量释放
augor
Posts: 6
Joined: Jan 07 2008, 19:34

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

Post by augor »

谢谢phoenix,你的代码精简多了...
Ray4
Moderator
Posts: 65
Joined: Dec 30 2007, 09:37

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

Post by Ray4 »

感谢分享,之前一直就在找类似的东西,只怪自己不懂脚本,嘿嘿,现在有现在的了
不夜侯
Posts: 101
Joined: Jul 29 2009, 16:22

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

Post 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"

gaogao9988
Posts: 17
Joined: Sep 19 2009, 19:30

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

Post by gaogao9988 »

多谢,这个对我很有用。可惜不支持utf-8。

请教phoenix,你为什么要这么写 (^(^</body>)) ,而不是直接 </body>
User avatar
phoenix
Site Admin
Posts: 526
Joined: Dec 29 2007, 16:27

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

Post by phoenix »

gaogao9988 wrote: 请教phoenix,你为什么要这么写 (^(^</body>)) ,而不是直接 </body>
(^(^</body>)) ,匹配 </body> 之前那个位置
gaogao9988
Posts: 17
Joined: Sep 19 2009, 19:30

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

Post by gaogao9988 »

谢谢,单看写法还真比较难理解。

真是爱死Proxomitron了,想怎么搞就怎么搞,真爽,我自己定制了好些经常去的网站。
funnyPC
Posts: 10
Joined: Jun 13 2011, 19:32

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

Post by funnyPC »

为什么添加这个规则以后,源码中的</body>就变成了</old-body>?再添加其他在body前插入的js就匹配不到了。
User avatar
phoenix
Site Admin
Posts: 526
Joined: Dec 29 2007, 16:27

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

Post by phoenix »

本规则并不改变 </body> 标签,或许是你用的其他规则的原因?
Post Reply