2011年6月16日 星期四

如果想要在showModalDialog拷貝文字的話

我爬過文,有人建議將window.showModalDialog()改為用window.open(),使用起來跟我需求有出入,所以最後沒有用。因為window.open()在javascript內會直接跑到下段程式去,而我是要回傳資料的,所以就沒用他了。

一開始我用了document.all["t1"].contentEditable = "True",讓內容變為設計模式,但這不僅可以拷貝,還可以修改,默認值為"inherit"。但會造成物件內的文字可以被任意的更動或刪除。於是我加了個判斷輸入的函數,如下:


/*屏蔽Backspace,輸入內容不屏蔽*/
function document.onkeydown()
{
//限制 text, textarea 以外物件不回應的鍵盤操作
if(document.activeElement.type == "text" document.activeElement.type == "textarea")
{
if ((event.keyCode==116) //屏蔽 F5 刷新鍵
(event.ctrlKey && event.keyCode==82))//Ctrl + R
{
event.keyCode=0;
event.returnValue=false;
}
}
else
{
if (
(event.keyCode==8) //屏蔽退格刪除鍵
(event.keyCode==46) //屏蔽delete刪除鍵
(event.keyCode==116) //屏蔽 F5 刷新鍵
(event.ctrlKey && event.keyCode==82)){ //Ctrl + R
event.keyCode=0;
event.returnValue=false;
}
}
}

雖然解決了鍵盤輸入的問題,但滑鼠可以將文字任意拖動的問題卻依然存在。
最後只好改以 <textarea cols=60 rows=4 readonly >的方式來實現文字的拷貝。