写UBB编辑器心得--编写浏览器兼容的 JavaScript 代码

  最近刚刚完成了一个简单的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尚未解决,不能开源,修正后发布源码。
本文因时间原因,写的比较乱 ,演示地址:往下看  

你可能感兴趣的:(JavaScript)