最近剛剛完成了一個簡單的UBB編輯器,就是本部落格評論、留言用的編輯器。編寫 javascript 過程中遇到不少瀏覽器安全色問題,在此記錄,以備查閱。
JavaScript 編寫過程中盡量使用ECMAScript標準中的方法、屬性。
1.獲得文字框中選中的文本:
if(document.selection && document.selection.type == "Text") //IE
{
SelectedStr = document.selection.createRange().text;
}
else if(window.getSelection && this.TextBox.selectionStart > - 1) //FF
{
var st = this.TextBox.selectionStart;
var ed = this.TextBox.selectionEnd;
SelectedStr = this.TextBox.value.substring(st, ed) ;
}
2.捕獲事件:
menuFontSize.onclick = function(e)
{
var evt = (window.event || e);
...
3.停止事件冒泡:
f(evt.preventDefault) //IE
{
evt.preventDefault();
evt.stopPropagation();
}
else //FF
{
evt.cancelBubble = true;
evt.returnValue = false;
}
4.註冊事件:
if(document.attachEvent) //IE
{
document.attachEvent("onclick", hideeve);
}
else FF
{
document.addEventListener("click", hideeve, false);
}
5.擷取iframe中元素的值:
document.getElementById("ZxjayUBBEditor").contentWindow.document.getElementById('txt').value;
6.擷取div元素中的文本:
IE支援innerText
FF支援textContent,但FF的textContent連空格、換行都擷取了,用正則去掉
$(objId).innerText //IE
$(objId).textContent.replace(/\ \ /g,"").replace(/(^\n+)|(\n+$)/g,"") //FF
7.用物件導向方法寫JavaScript程式,思路清晰,冗餘代碼少,值得提倡。
補充!
後台獲得iframe中的元素的值方法為:
在表單提交的時候,執行JavaScript代碼,用javascript取得iframe中元素的值並寫到隱藏控制項,在背景程式Request就行了。
為防止提交不成功,寫入的資訊丟失,在iframe載入時執行onload()事件,將隱藏控制項的值寫到iframe控制項裡。
由於還有Bug尚未解決,不能開源,修正後發布源碼。
本文因時間原因,寫的比較亂,示範地址:往下看↓