最近刚刚完成了一个简单的UBB编辑器,就是本博客评论、留言用的编辑器。编写 javascript 过程中遇到不少浏览器兼容问题,在此记录,以备查阅。
JavaScript 编写过程中尽量使用ECMAScript标准中的方法、属性。
1.获得文本框中选中的文本:
IE支持innerText
FF支持textContent,但FF的textContent连空格、换行都获取了,用正则去掉
补充!
后台获得iframe中的元素的值方法为:
在表单提交的时候,执行JavaScript代码,用javascript取得iframe中元素的值并写到隐藏控件,在后台程序Request就行了。
为防止提交不成功,写入的信息丢失,在iframe加载时执行onload()事件,将隐藏控件的值写到iframe控件里。
由于还有Bug尚未解决,不能开源,修正后发布源码。
本文因时间原因,写的比较乱
,演示地址:往下看↓
JavaScript 编写过程中尽量使用ECMAScript标准中的方法、属性。
1.获得文本框中选中的文本:
2.捕获事件: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) ;
}
3.停止事件冒泡:menuFontSize.onclick = function(e)
{
var evt = (window.event || e);
...
4.注册事件:f(evt.preventDefault) //IE
{
evt.preventDefault();
evt.stopPropagation();
}
else //FF
{
evt.cancelBubble = true;
evt.returnValue = false;
}
5.获取iframe中元素的值:if(document.attachEvent) //IE
{
document.attachEvent("onclick", hideeve);
}
else FF
{
document.addEventListener("click", hideeve, false);
}
6.获取div元素中的文本:document.getElementById("ZxjayUBBEditor").contentWindow.document.getElementById('txt').value;
IE支持innerText
FF支持textContent,但FF的textContent连空格、换行都获取了,用正则去掉
7.用面向对象方法写JavaScript程序,思路清晰,冗余代码少,值得提倡。$(objId).innerText //IE
$(objId).textContent.replace(/\ \ /g,"").replace(/(^\n+)|(\n+$)/g,"") //FF
补充!
后台获得iframe中的元素的值方法为:
在表单提交的时候,执行JavaScript代码,用javascript取得iframe中元素的值并写到隐藏控件,在后台程序Request就行了。
为防止提交不成功,写入的信息丢失,在iframe加载时执行onload()事件,将隐藏控件的值写到iframe控件里。
由于还有Bug尚未解决,不能开源,修正后发布源码。
本文因时间原因,写的比较乱
,演示地址:往下看↓
浙公网安备 33010602011771号