兼容IE和Firefox的最简单UBB编辑器脚本 不指定

参考了boblog的UBB代码写了这个函数。

给id为o_id的元素中选中的文本添加o_tag对应的UBB表情
e.g.  
addUBB("content", "b");
addUBB("content", "i");

function addUBB(o_id, o_tag){
    if(navigator.userAgent.indexOf("MSIE") != -1){ //IE
        var sel = document.selection;
        var range = sel.createRange();
        if(!(sel.type=="Text" && range.parentElement().id==o_id))return;
        range.text = "["+o_tag+"]"+range.text+"[/"+o_tag+"]";
    }else{ //FireFox
        var obj = document.getElementById(o_id);
        var selStart = obj.selectionStart;
        var selEnd = obj.selectionEnd;
        if(selStart == selEnd) return;
        var a = obj.value.substring(0, selStart);
        var b = obj.value.substring(selStart, selEnd);
        var c = obj.value.substring(selEnd, obj.value.length);
        obj.value=a+"["+o_tag+"]"+b+"[/"+o_tag+"]"+c;
    }
}

创建XML DOM的函数,兼容IE和Firefox 不指定

一下代码来自w3school

function loadXMLDoc(dname)
{
var xmlDoc;
// code for IE
if (window.ActiveXObject)
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xmlDoc=document.implementation.createDocument("","",null);
  }
else
  {
  alert('Your browser cannot handle this script');
  }
xmlDoc.async=false;
xmlDoc.load(dname);
return(xmlDoc);
}

Ubuntu下网络参数配置 不指定

打开配置文件
$ sudo vi /etc/network/interfaces

DHCP参数配置
引用
auto eth0
iface eth0 inet dhcp


Static IP (静态IP)参数配置
引用
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1


Restart the network
$ sudo /etc/init.d/networking restart

event.keyCode - 写出兼容IE和Firefox的按键捕捉及识别代码 不指定

在写Felix的javascript运行环境的时候
为了方便使用,Felix希望能够捕捉到CTRL+Enter按键作为运行的快捷键
以前写过for IE的代码,非常简单:
<script language="javascript">
function myKeyPress(){
  alert(event.keyCode);
}
</script>
<body onkeypress="myKeyPress()">
......

但是这样的代码在Firefox下根本不能运行,因为event不是Firefox的一个全局对象。
查了好多资料,终于明白了在Firefox下要这样写代码才行:
<script language="javascript">
function myKeyPress(evt){
  alert(evt.which);
}
</script>
<body onkeypress="myKeyPress(evt)">
......

但是很遗憾,这样的代码在IE下又不能运行——好吧,采取折衷方案如下:
<script language="javascript">
function myKeyPress(evt){
    evt = (evt) ? evt : ((window.event) ? window.event : "") //兼容IE和Firefox获得keyBoardEvent对象
    var key = evt.keyCode?evt.keyCode:evt.which; //兼容IE和Firefox获得keyBoardEvent对象的键值
    if(evt.ctrlKey && (key == 13 || key == 10)){ //同时按下了Ctrl和回车键
        //do something;
    }
}
</script>
<body onkeypress="myKeyPress(evt)">
......

于是代码终于可以在IE和Firefox运行了。

总结一下需要注意的地方:
1. 取得keyBoardEvent对象
2. 取得keyBoardEvent对象的键值
3. onkeypress="myKeyPress(event)" 函数需要一个参数

以上很大一部分是参考了来自以下网页:
Javascript Madness
该网页详细介绍了几个很容易令人发疯的兼容性问题。。。。

Felix的javascript运行环境 不指定

最近经常要测试javascript代码
但是又不想专门写一个文件,然后保存,双击……
虽然可以在浏览器地址栏里面写 javascript: alert("ooxx");
但是对于稍微长一点的代码它又很不好编辑
于是今天花了点时间写了个——Felix的javascript运行环境
确实就是一个HTML页面,有一个textarea,里面可以写javascript代码
写完以后按下CTRL+Enter或者点击运行
页面的脚本会捕捉到这些事件,然后调用eval()函数
把textarea里面的代码当作javascipt代码运行。
值得一提的是使用了try{eval(code.value);}catch(e){alert(e);}这样的结构
也就是说如果你输入的代码有问题,还能够提示错误,非常方便:)

点击这里打开:Felix的javascript运行环境

Javascript 的时间日期处理(可以取得精确的时间,到毫秒级) 不指定

主要是对Date对象的使用。
测试一下:
<script language="javascript">
function showTime(){
var a=new Date();
var y = a.getFullYear()+"-";
var m = (a.getMonth()+1)+"-";
var d = a.getDate()+" ";
var h = a.getHours()+":";
var x = a.getMinutes()+":";
var s = a.getSeconds()+".";
var ms=a.getMilliseconds();
alert(y + m + d + h + x + s + ms);
}

//取得时间戳的办法(精确到毫秒):
function timestamp(){
  var a = new Date();
  return Date.parse(a) + a.getMilliseconds();
}
</script>