CBETA
E-News 中華電子佛典協會新聞電子報
2000-07-25 第十五期 |
【 本期專題 】如何使用IE瀏覽器將資料傳送至剪貼簿
|
【 本期內容 】
《最新訊息》《專題報導》《法語選粹》《交流園地》 |
◎掃瞄、辨識書院版卍字續藏目錄。(輸入組)
◎持續進行T18-21、T33-55、T85校勘條目輸入工作。(輸入組)
◎T45(諸宗部二)、T47(諸宗部四)經文校對預計七月底完成。(校對組)
◎T37-T40 已於七月上網。(網路組)
◎XML 版全文檢索已於七月上網測試。(網路組)
◎CBGrep 程式改版完成。(資訊組)
◎文字切割程式完成。(資訊組)
◎參加第三屆國際漢學會議「漢籍數位典藏」展示,獲各國與會嘉賓好評。(發行組)
◎推廣活動:應邀至法源寺別苑大智度論讀經班介紹光碟使用。(發行組)
◎佛學辭典程式改版中。(發行組)
◎研發組:
- 缺字處理(查通用字)--T42-T43。
- 缺字處理(查M碼)--T42-T43。
- XML檔檢查--T42。
- normal檢查--T42。
- HtmlHelp版轉檔後檢查--T42。
- juan檢查--T42。
- 校勘條目校對--T02.T11。
- 缺字四角號碼編定--CB0001-CB5046。
- 悉曇(siddam)新造字之檢查確認--T18-T21。
- 合併悉曇(siddam)檔案(word→txt→xml)--T18-T21。
如何使用IE瀏覽器將資料傳送至剪貼簿?
----CBETA經文引用複製script略談
Jyh-chyang Lee
您在使用CBETA電子佛典時,是否運用過引用複製的功能呢?
在這篇文章之中,我們將簡單的介紹如何利用Script語言,讓網頁增加引用複製的功能。當然,在CBETA的經文資料之中,由於有充份的XML標記可以讓程式來判斷,所以能夠很便利的找到經文的段落和出處,這一點您可參考電子報之中介紹過的XML標記應用。
以下的文章對於不熟悉script語言的朋友可能有些複雜,但是程式基本上均能在IE5.0下正常執行。對於script
語言的詳細介紹,您可自行上網瀏覽相關的入門網站。
若想使用瀏覽器進行複製工作,可使用execCommand的指令,其語法簡介如下,詳細的說明您可以參考MSDN文件:
bSuccess = object.execCommand(sCommand [, bUserInterface] [, vValue])
參數說明:
sCommand
命令字串,為必要的參數,傳送一指令字串給瀏覽器執行。
bUserInterface
一個布林值,選擇性參數,告訴瀏覽器是否要通知或詢問使用者。預設值為偽(false),即不顯示使用者的界面。若為真值時(true),則依指令的情形顯示使用者的界面。例如設定字型時選擇字型內容等等。
vValue
選擇性的參數,其格式依不同的指令而變化。如改變顏色時,傳入顏色的數值。
函數的傳回值:
bSuccess
布林值,如果執行指令成功,則傳回真(true),反之則為偽(flase)。
適用物件:
document(IE4), TextRange(IE4), controlRange(IE5)
使用注意事項:
execCommand時,需在網頁下載完畢之後執行。通常在VB裡,可使用下列的事件:
Dim WithEvents WebDoc As HTMLDocument
Private Sub brwWebBrowser_DownloadComplete()
On Error Resume Next
Set WebDoc = brwWebBrowser.Document
WebDoc.execCommand "SelectAll"
'全選
End Sub
在網頁之中,則可用下列方式,在網頁下載完成之後,直接將網頁印出(IE5):
<html>
<head>
<title>Print_Me_onload!</title>
<meta author="Jester@CBETA 2000">
</head>
<script language="JavaScript1.2">
function go_print(){
document.execCommand("selectall");
if (window.print) {
window.print();
}
}
</script>
<body onload="go_print()">
……
</body>
</html>
您可利用execCommand執行許多功能,這裡先簡單列舉幾個指令,其他的指令有機會另文再談:
sCommand 指令內容
============ ===============
SelectAll 全選
Refresh 重新載入文件
Copy 複製
Cut 剪下
Delete 刪除
============ ===============
當使用者選取某段文字之後,希望讓使用者按一個鍵,或是由程式控制,將選取的資料送到剪貼簿中,以下這一段程式就能夠幫上忙:
<html>
<head>
<title>簡單的Copy</title>
<meta author="Jester@CBETA 2000">
</head>
<script language="JavaScript1.2">
function do_copy(){
if (document.selection.type!="none") {
var range=document.selection.createRange();
range1.execCommand "copy";
}
}
</script>
<body>
<input type="button" value="引用複製" name="copy"
onclick="do_copy()">
……
</body>
</html>
由於execCommand只適用於document(IE4), TextRange(IE4), controlRange(IE5)三個物件之中,因此必需先利用createRange()的方式,將選取區複製成一個TextRange,這裡即是range1。這個動作有利於將來進行其他的修改。(註:您也可以利用createTextRange來為其他的元件產生TextRange。)
在上段程式碼之中,我們加上了判斷是否有選取區的判斷式:
if (document.selection.type!="none") {
…
}
selection的type屬性可為none,text和control三種。如果沒有選取區或插入點的話,則為none。
現在,我們已經可以在網頁中加上copy的功能,而不必讓使用者按ctrl-C。不過這樣的功能並不足以讓我們滿意,因為我們希望在複製的時候,能自動的加上一些資訊,例如文章的出處、版本,甚至於依照不同的情況加上不同的資訊等等。要處理這個功能,我們則必需對於TextRange有所了解。
所謂的TextRange,簡單的來說,就好像是一列文字之中,第X字開始到第Y個字為止所產生的文字區塊,例如閱兵時為了使隊伍整齊,讓大家依身高排成一列,然後取其中身高最接近的一群人出來一樣。對於瀏覽器而言,有了這個開頭和結尾的位置,就可以決定選擇的內容。
對於TextRange物件,我們常用下列幾種方式來取得內容:
TextRange.htmlText 文字範圍的HTML碼內容
TextRange.text 文字範圍的文字內容
另外,在IE4.0以後,對於標記的物件,提供了以下四種取得/設定內容的方式,也可以運用在TextRange物件中:
TextRange.innerHTML
TextRange.outerHTML
TextRange.innerText
TextRange.outerText
或者是利用以下兩個方式動態的插入內容:
insertAdjacentText
insertAdjacentHTML
現在,我們利用設定純文字的方式,希望在使用者選取了網頁上某段文字時,能夠加上網頁的標題,和網頁最後更新的時間。
function do_Xcopy() {
if (document.selection.type!="none") { //判斷是否有選取區
//製造文字選取區
var range = document.selection.createRange();
//複製選取區,直接利用range來執行亦可
var range1=range.duplicate();
//另外設定一個字串,內容包括網頁的標題和最後修改的時間。
temp = "《"+self.document.title+"》"+self.document.lastModified;
//將range1的內容重新設定,加上換行符號及temp字串的內容,"\n"代表換行
range1.text+="\n"+temp;
//執行複製
range1.execCommand("Copy");
}
//下列兩行是IE之中防止事件沸升所做的處理。
return false;
cancelBubble;
}
如果您直接利用上面的函數,您會發現,每當您使用一次,選取的內容居然會增加我們加上的標題和日期字串。而且在執行完以後,選取區的反白會消失,然而事實上選取區仍然存在。更重要的是,居然選取的動作並沒有正常的執行。
因此,我們必須要想辦法改善目前的狀況。
改善的方法,是利用先前提及的開頭和結尾的功能,由於選取區的內容被修改過了,所以造成在執行copy指令時無法正常,因此我們希望能在要copy之前,把要加上去的文字加上,執行完指令之後,再把加上去的文字拿掉,於是我們將程式碼改成這樣:
function do_Xcopy() {
if (document.selection.type!="none") {
var range = document.selection.createRange();
var range1=range.duplicate();
var temp = "《"+self.document.title+"》"+self.document.lastModified;
//將range1的內容先存起來
var sText=range1.text
range1.text+="\n"+temp;
//沒有加上下列這一行將無法正常的執行Copy指令
range1.moveStart("character",0-sText.length-temp.length-1);
//執行複製
range1.execCommand("Copy");
//取回選取區原本的內容
range1.text=sText;
range1.moveStart("character",0-sText.length-1);
}
return false;
cancelBubble;
}
如此一來,我們就能正常的使用引用複製的功能了。
這裡需要進一步介紹的,是range1.moveStart的方法:
iMoved = TextRange.moveStart(sUnit [, iCount])
iMoved是傳回移到的位置,依照的單位是sUnit中所定義的,可分為字元"character",單字"word",句子"sentence"和文字編輯區"textedit"等等。而iCount則是移動的距離,內定值是1,可為負數。
函數string.length會傳回字串的字元數,因此我們使用character為單位,便可正確的取出我們要的選取區了。
小範例:
看了這許多,您是不是有一點眼花了呢!
沒有關係,接下來我們利用上述的功能,做一些應用上的示範。
如果我們要讓使用者在不同的網頁之中交換參數值,有幾種方法,
第一,利用伺服器的功能,如ASP、PHP、CGI等等;
第二,使用cookie;
第三,利用網頁連結時傳遞參數,如x.html?name=jester&Co=CBETA。
第四,使用frameset,然後利用瀏覽器物件和DOM來處理。
第五,其他……
現在,我們還有一個選擇,就是可以利用剪貼簿的功能來傳遞。
首先,我們要先能把資訊傳到剪貼簿,為了方便,我們詢問使用者姓名,並且動態顯示問候語。然後在換頁之後仍然保留使用者的姓名。其中我們利用TEXTAREA來處理,將可做更進一步的運用,由於超過本文範圍,在此略過不提。
<html>
<head>
<title>welcome!</title>
<meta author="Jester@CBETA 2000">
</head>
<script>
function copyname(){
var range=document.all["names"].createTextRange();
range.execCommand("copy");
}
</script>
<body onload="copyname()">
<script>
var sName=window.prompt("請問貴姓大名?","無名氏");
document.write("<p>歡迎<TEXTAREA STYLE='border:none;overflow:hidden'
ID=names>"+sName);
document.write("</TEXTAREA>光臨</p>");
</script>
………其他的內容………
</body>
</html>
其中
vTextData = window.prompt([sMessage] [, sDefaultValue])
表示顯示一個對方框讓用者輸入一個字串。
再來,我們希望另一個網頁能夠讀出這個值:
<html>
<head>
<title>Show Name!</title>
<meta author="Jester@CBETA 2000">
</head>
<script language="JavaScript">
function shownames(){
var range=document.all["names"].createTextRange();
range.execCommand("paste");
}
</script>
<body onload="shownames()">
<p><TEXTAREA STYLE='border:none;overflow:hidden' ID=names></TEXTAREA>
</p><p>………其他的內容………</p>
</body>
</html>
當然,由於剪貼簿是共用的環境,因此您能取得其他程式傳來的資訊,但也可能資訊被其他的程式所修改,這也許是個壞處,但卻是cookie所不及。
例如,我們可以做一個時計,每隔一秒鐘抓一次剪貼簿中的內容,如果有所更動,則直接線上處理,如查辭典,傳遞訊息伺服器等等。
小結:
經文加上引用複製的功能,除了要有相關的技術之外,CBETA
對於經文資料完善的標記處理,才是最重要的基礎之一。因為有完善的標記資訊,才能夠提供更多的訊息和服務,並進行交換。由於HTMLHelp版經文中所提供的引用複製功能有許多的標記分析,在此就不加以介紹了,您可利用上述的方式自由地運用在網頁上。
「生死無懼」選錄 (圓明出版社)
索甲仁波切著/黃朝譯
編案:生死無懼是一部小書,同時也是一本大書。索甲仁波切以其平易雋永的教導,一日一段引導讀者品味生命,在此節錄七個段落,供大家參考。
7.9
在這個高度相互依賴的世界裡,個人和國家不再能獨自解決問題,而需要彼此互助合作。因此,我們要培養一種世界責任感。要捍衛及孕育這個世界家庭,扶持弱勢的成員,并保育我們的居住環境,這是我們個人及大家共同的責任。
──達賴喇嘛
7.3
想像你與親愛的人相處有困難,如父母親、丈夫或妻子、情人或朋友等。
如果你不把他想成他的角色,而是另一個「你」,另一個跟你有同樣感覺,有同樣快樂、害怕和痛苦的人;這樣的助益和啟示該有多大啊!想像他是個跟你完全一樣的人,可以幫助你打開心扉接納他,帶給你更多的智慧去幫助他。
7.22
讓禪修變得有趣的方法有很多種。你可以找些能夠振奮你的音樂,打開你的心扉;你可以蒐集一些讓你感動的詩句、箴言或教法,隨時帶在身邊,提升你的心靈。我一直很喜歡西藏的唐卡畫,它的美麗帶給我力量。你可以找些能激起神聖感的複製畫,掛在房間牆上。
你可以聽大師開示的錄音帶,或神聖的唱誦。你可以在你的禪房,放一束花,點一柱香或蠟燭,供奉上師的照片或本尊、佛像。你可以把平凡的房間,變成舒適又莊嚴的空間,讓你像老朋友會面一樣,每天愉悅地面對真我。
7.20
想像你一輩子沒洗過澡,有一天你決定要沖個澡,當你開始沖刷時,你驚訝地發現,污垢開始從毛細孔滲出,流下身體。你認為自己搞錯了:你以為會越洗越乾淨,沒想到污垢卻越來越多。你瘋狂地逃出浴室,覺得自己根本不應該去洗澡,你甚至比沒洗更髒。你不知道最聰明的辦法就是耐心地把澡洗完。剛開始看起來可能更髒,不過只要再洗一會,就會清潔溜溜了。這是淨化的必經的過程。
不管心中有什麼懷疑,只要把它當成一個障礙,是一個待澄清和除去的障礙,基本上它並不是問題,只是淨化和學習的過程罷了。讓這個過程繼續,並自己完成,同時絕不要失去信任和決心。這是過去所有偉大的修行者所遵循地方法,他們常說:「沒有比毅力更堅硬的盔甲。」
7.14
融合智慧和慈悲是參與保育地球最有效的方法。
現今許多宗教大師也了解到,不只出家人要修行,在家人不論其信仰及生活方式如何也需要修行。心靈開展的本質是非常實際的、動態的,我們所共處的險境使得心靈開展更顯必要,因為我們不再認為它只是令人愉悅的事,而是存活下去的必要手段。
如同一個著名的西藏教法所說:「當世界充滿邪惡時,所有的不幸都應轉化成開悟之道。」
6.2
若你的心保持虛空,則隨時都可以接納任何東西;它是開放的。初學者的心靈蘊含著無限的可能;但專家的心卻只有少許的可能性。
──鈴木大拙
6.19
不管你做什麼,不要逃避痛苦,要接納它並保持敏銳。不管你多麼絕望,都要接受你的痛苦,因為事實上它賜給了你無價的禮物:讓你透過修行,了悟憂傷背後的實相。
路米(Rumi)寫道:「悲傷,可以成為慈悲的花園。」若你的心能對任何事保持開放,在你追求愛和智慧的一生中,痛苦會成為你最大的盟友。
電子佛典光碟使用心得分享(四)
CBETA 光碟 (June 2000) 區域網路共用安裝說明
周邦信
Normal 版
在您的 File Server 上建立共用目錄,例如 F:\CBETA。
由於本版在光碟中提供的是壓縮過的 ZIP 格式,因此您必須有類似
WinZIP 的解壓縮軟體,將光碟:\CBETA\Normal 目錄下的壓縮檔解壓縮至您
File Server 上的共用目錄,例如
將 T01.zip 解壓縮到 F:\CBETA\Normal\T01\,
T02.zip 解壓縮到 F:\CBETA\Normal\T02\...
Client 端即可使用 F:\CBETA\Normal 目錄下的 Normal 版經文。
(註:1999年之前的normal版本並未壓縮,請參考App版的安裝方式)
App 版
在您的 File Server 上建立共用目錄,例如 F:\CBETA。
將光碟:\CBETA\App 目錄複製到 F:\CBETA\App。
Client 端即可使用 F:\CBETA\App 目錄下的 App 版經文。
(註:2000 Mar.版本中的App檔為壓縮檔,請參考Normal版的安裝方式)
HTML Help 版
Client 端更新 HTML Help Viewer 1.3:
在 Client 端執行光碟:\Tools\HTMLHelp\HHUpd.exe
一般功能
在您的 File Server 上建立共用目錄,例如 F:\CBETA。
將光碟:\CBETA\HTMLHelp 目錄下的檔案複製到 F:\CBETA\HTMLHelp。
Client 端開啟 F:\CBETA.chm 即可使用。
右鍵功能(引用複製、查辭典)
上網下載 http://ccbs.ntu.edu.tw/cbeta/download/HTMLHELP/CBHHTOOL.ZIP
解壓縮後按照 Readme.txt 說明的步驟安裝。
Word 版
一般功能
在您的 File Server 上建立共用目錄,例如 F:\CBETA。
由於本版在光碟中提供的是壓縮過的 ZIP
格式,因此您必須有類似 WinZIP 的解壓縮軟體,將光碟:\CBETA\Doc
目錄下的壓縮檔解壓縮至您 File Server上的共用目錄,例如
將 T01.zip 解壓縮到 F:\CBETA\Doc\T01\,
T02.zip 解壓縮到 F:\CBETA\Doc\T02\...
將光碟:\CBETA\Doc\*.doc 複製到 F:\CBETA\Doc
Client 即可以下列三種方式使用 Word 版經文:
開啟經名目錄 F:\CBETA\Doc\IndexS.doc
開啟詳細目錄 F:\CBETA\Doc\Index.doc
直接開啟經文,例如 F:\CBETA\Doc\T01\T01n0001.doc
Client 端 CBETA工具列安裝
Word 2000 中文版使用者
進入 Word,開啟功能表:工具\選項\檔案位置,記錄下「使用者範本」所在目錄將光碟:\CBETA\Doc\CBETA9c.dot
複製到「使用者範本」目錄下開啟 CBETA
經文時便會同時開啟工具列。如果沒有自動出現工具列的話,請在Word功能表:工具/自訂/工具列裏將
CBETA打勾,便會出現CBETA工具列。
Word 2000 英文版使用者
進入 Word,開啟功能表:工具\選項\檔案位置,記錄下「使用者範本」所在目錄將光碟:\CBETA\Doc\CBETA9e.dot
複製到「使用者範本」目錄下開啟 CBETA
經文時便會同時開啟工具列。如果沒有自動出現工具列的話,請在Word功能表:工具/自訂/工具列裏將
CBETA打勾,便會出現CBETA工具列。
Word 97 中文版使用者
進入 Word,開啟功能表:工具\選項\檔案位置,記錄下「使用者範本」所在目錄將光碟:\CBETA\Doc\CBETA8c.dot
複製到「使用者範本」目錄下開啟 CBETA
經文時便會同時開啟工具列。如果沒有自動出現工具列的話,請在Word功能表:工具/自訂/工具列裏將
CBETA打勾,便會出現CBETA工具列。
Word 97 英文版使用者
進入 Word,開啟功能表:工具\選項\檔案位置,記錄下「使用者範本」所在目錄將光碟:\CBETA\Doc\CBETA8e.dot
複製到「使用者範本」目錄下開啟 CBETA
經文時便會同時開啟工具列。如果沒有自動出現工具列的話,請在Word功能表:工具/自訂/工具列裏將
CBETA打勾,便會出現CBETA工具列。
讀者來函回覆:
執事先生:
1.電子佛典的成果非凡,在此向各位致最大敬意。
2.有一小建議--部分佛典,如密教部內有非常多之圖形、及梵文字型。若不加入檔案中,似覺缺少了什麼,並不完全。因此,是否可研究放入圖檔。當然,圖檔輸入的技術面又須考量甚多問題,諸如:圖檔如何"減肥"、如何維持圖形清晰等。但仍覺得值得開發相關技術。
3.目前檔案除了存為txt , doc檔外,亦可考慮存為pdf格式,如此在世界任何電腦讀經文時都不會受影響,這更增閱讀便利性。且如果放入圖型時亦比較容易定格,不會因軟體不同而"走位"。
由於各位的努力,使我們在網路上即能順利閱讀佛經,我們雖未參與工作,但心中實在非常感激各位的付出,才使我們能突破時空阻礙,隨時可閱讀佛經,甚至有些經典平時還不容易取得呢!在此,向各位再致上最大的敬意。
阿隬陀佛。
Rice(7/19)
發行組答覆:
您好,
非常感謝您的建議與指導,敝會將會納入未來計畫考量。以下是簡單的針對您所提的問題加以答覆。
首先,針就圖形與梵文字形的部份,在密教部中的悉曇字,敝會的同仁正在加緊的處理,由於技術上仍有許多地方不易處理,故未能上網及在光碟中收錄,在此致歉。而密教部經書中夾雜圖表的部份,亦已處理標記等等的資訊,將來會一併納入成果。
如您所提,加入圖檔之後,相關的技術也是一大挑戰。其中包括悉曇字的輸入、呈現與檢索等等問題,字型與圖檔的處理與編排、將來資料的交換等等挑戰,敝會同仁亦盡最大的努力來克服。
而就圖檔的部份,事實上大正藏第八十六冊至第一百冊圖像部的部份,因未取得大藏出版株式會社之授權,故不在敝會目前漢文佛典電子化的計畫內,亦一併告知。
而對於其他格式的經文,如Pdf格式,敝會均已進行評估,並納入未來發表時之考量。由於pdf格式較適於列印,對於編輯、檢索、線上瀏覽等等的支援較少,並考量可程式性的因素,以及字型處理等其他因素,故目前尚未發表
pdf 格式的經文。
若有對於製作各種經文格式有研究的朋友,歡迎與我們共同測試研究,本協會可以提供各種原始經文資料,以期在各方有專門研究的朋友協助發,開發出更方便、更好用也更人性化的讀經系統。
最後,謝謝您的建議與指導,
敬祝
平安吉祥
CEBTA發行組
Jester
|