Friday, 30. June 2006, 09:46:19
繁简转换 Userjs 之同文堂修改版
这是用来将网页文字在简体与繁体之间相互转换的脚本。这里是原始出处,这里是 Mark 的介绍,包含对应的按钮。使用了一段时间,发现这位台湾朋友的繁简对照表不是很好,经常出来 深唿吸 註释 这样的东西,虽然勉强可读,但是不大顺畅。
费了些力气从 新同文堂 0.2.9.5b 中提取出繁简对照表优化了一下这个脚本,用起来爽多了,需要的朋友可以从附件里下载。
说明:同文堂中繁转简和简转繁使用不同的对照表,台湾朋友的脚本使用同一个表相互转换。我使用同文堂的工作方式修改了这个脚本,对双向转换分别优化,相信可以使两岸的朋友都获得更好的效果。
transform_V2.js
update:
使用 UTF-8 另存了一下,避免在论坛中出乱码。
Friday, 30. June 2006, 21:36:38
String.prototype.s2t = function() {//Simplified to Traditional
var s2t_s = "\u00B7\u2015\u2016...下略2K+字";//Chinese Simplified
var s2t_t = "\u2027\u2500\u2225...下略2K+字";//Chinese Traditional
var n = '', idx;
for (var i=0; i < this.length; i++) {
idx = s2t_s.indexOf(this.charAt(i));
n += idx > -1 ? s2t_t.charAt(idx) : this.charAt(i);
}
return n;
}
String.prototype.t2s = function() {//Traditional to Simplified
var t2s_t = "\u00AF\u2025\u2027...下略2K+字";//Chinese Traditional
var t2s_s = "\u02C9\u00A8\u00B7...下略2K+字";//Chinese Simplified
var n = '', idx;
for (var i=0; i < this.length; i++) {
idx = t2s_t.indexOf(this.charAt(i));
n += idx > -1 ? t2s_s.charAt(idx) : this.charAt(i);
}
return n;
}我改成這樣.1.String.indexOf()的index保存起來, 這樣每個字可以少一次查表動作.
2.直接使用\uxxxx格式定義字元, 對照表建立時可以少一次unescape.
3.因為兩支轉換所用的表各不相同, 我將對照表拉進函式裡, 不必每頁都初始化對照表, 有需要轉換時再做初始化. 因為O裡每個頁面都會重新編譯userJS, 整體變數似乎沒啥意義.
理論上應該可以省一些時間, 不過JS的效率.... 似乎也沒啥必要改...
照一般的邏輯的話, 依出現頻率重新調整對照表字元順序"或許"還能再省一些...
Saturday, 1. July 2006, 11:49:32
http://dzh.mop.com/topic/readSub_6545392_-2_1.html
我这段时间一直追着看的连载,标题党不过内容还可以。点击只看楼主后得到的页面超长,用两个脚本转换都是第一次 30 秒,之后每次 20 秒,差别很小。
Saturday, 22. July 2006, 08:09:23
链接有变
Originally posted by kinnik:
有沒有高手可以弄一個能自動轉換繁體中文就更好?
应该可以自动转换,不过前面的判断不知道怎么做
Saturday, 22. July 2006, 19:25:35
Originally posted by mark_poleon:
我写的介绍在这里 http://my.opera.com/mark_poleon/blog/show.dml/285089
链接有变Originally posted by kinnik:
有沒有高手可以弄一個能自動轉換繁體中文就更好?
应该可以自动转换,不过前面的判断不知道怎么做
我也是看了你的介紹才發現這userjs,實在非常方便繁體用家
我把javascript檔打開來看,也覺得稍作修改應該可以自動轉換,只可惜我對javascript語言一竅不通
如有高手可以代勞,在此多謝
Sunday, 6. August 2006, 01:10:30 (edited)
Add the following to the start of the script
// ==UserScript==
document.addEventListener('DOMContentLoaded',function() {
var body;
if( body = document.body ) {
and this to the end
body.innerHTML = body.innerHTML.s2t(); }},false);
經測試後,發現google.com的搜尋會產生問題
http://www.google.com/search?hl=en&q=1&btnG=Google+Search
在上面頁面再搜尋時,會自動跳至google首頁
可disable google.com的javascript就能解決
Saturday, 5. August 2006, 18:27:03
自動轉其實很浪費時間, 有需要時再轉即可... JS自動轉...累...Lag...
或者以button來切換加script為某網域加上某個cookie(類似那支highlight那樣把關鍵字塞進去), 然後串onload之前先判讀cookie的設定值來決定是否轉換.
Sunday, 6. August 2006, 01:05:12 (edited)
Originally posted by idle.newbie:
串onload是可以啦, 醬的話直接簡繁分拆成兩部分再直接轉換即可, 而不要用prototype的方式(負擔較重). 再搭配上@include/@exclue來使用(去userjs.org抓兩支回來看就大概知道怎加)就不用關js.
自動轉其實很浪費時間, 有需要時再轉即可... JS自動轉...累...Lag...
或者以button來切換加script為某網域加上某個cookie(類似那支highlight那樣把關鍵字塞進去), 然後串onload之前先判讀cookie的設定值來決定是否轉換.
國外用家替我做了這個自動簡體轉繁體
我把繁轉簡的碼去除
http://my.opera.com/kinnik/homes/files/transform_s2t_auto.js
解決了google的問題
執行效率也有相當的提升
根據stoen的版本弄了個簡轉繁的,方便中國大陸的用家
http://my.opera.com/kinnik/homes/files/transform_t2s_auto.js
Sunday, 6. August 2006, 23:15:35
唯一的缺憾是attribute裡的中文字並沒有轉換到, 像是title(tooltip)之類的, 進起點書目指到任一VIP章節就可發現.
當然Beata的寫法比較好, tooltip之類算是輔助可以忽略, 也避免掉url裡含中文字時的錯誤(像是這邊的blog), 即便是on demand的情景下也建議拆textnode轉換.
Monday, 7. August 2006, 09:26:54
在大部分網頁裡也都能顯示我自己所設定的字型,
不過有些網頁不知到是不是他本身就有設定字型的關係,
就算我把樣式中的作者模式和使用者模式中的網頁字型與文字取消,
還是無法使用自己所設定字型?.?
像是 http://www.cmfu.com/readchapter.asp?bu_id=1806574&bl_id=67583
始終無法出現我設定的正黑體,在這裡則沒有問題
請問能幫幫我嗎?
謝謝你
Tuesday, 8. August 2006, 03:42:36
Originally posted by superdodo:
謝謝kinnik的回答,您說的那些選項我都已經調整過了,
在大部分網頁裡也都能顯示我自己所設定的字型,
不過有些網頁不知到是不是他本身就有設定字型的關係,
就算我把樣式中的作者模式和使用者模式中的網頁字型與文字取消,
還是無法使用自己所設定字型?.?
像是 http://www.cmfu.com/readchapter.asp?bu_id=1806574&bl_id=67583
始終無法出現我設定的正黑體,在這裡則沒有問題
請問能幫幫我嗎?
謝謝你
費了一番功夫,下載了正黑體一試
你可先在工具>功能設定>進階>字型>多國語言設定>中文(簡體)>一般語言
選正黑體
以後每次瀏覽相關網頁時,再在檢視>編碼,選簡體中文即可
1ScreenHunter_001.jpg
Moderated by:
Langeline
musiccow
Thruth
mark_poleon
