Oct 11
zz from http://www.blogjava.net/boddi/archive/2006/08/15/63609.html

attachEvent() / addEventListener() 对象添加触发事件(转)

有时候当某一对象的某一事件被触发时,它所要执行的程序可能是一大串,有可能是要呼叫某一函数,也有可能同时又要呼叫另一函数。

document.getElementById("btn").onclick = method1;
document.getElementById("btn").onclick = method2;
document.getElementById("btn").onclick = method3;
如果这样写,那么将会只有medhot3被执行

在IE中使用attachEvent ,
Sep 26
用起来挺方便的。

function setCookie(key, value, day) {
    day = parseInt(day);
    if(!isNaN(day)){
        var expireDate = new Date();
        expireDate.setTime(expireDate.getTime() + (day*24*3600000));
        document.cookie = key + "=" + encodeURIComponent(value) + ";expires=" + expireDate.toGMTString();
    }
    else{
        document.cookie = key + "=" + encodeURIComponent(value);
    }
}

function getCookie(str){
    var reg = new RegExp("(^| )"+str+"=([^;]*)(;|$)","gi");
    var ck = reg.exec(document.cookie);
    try{
        if(ck[2] == null || typeof(ck[2]) == "undefine") return null;
    }
    catch(e){
        return null;
    }
    return decodeURIComponent(ck[2]);
}
Sep 26

javascript中trim函数的实现 不指定

felix021 @ 2008-9-26 20:21 [IT » 网络] 评论(1) , 引用(0) , 阅读(4871) | Via 本站原创
在javascript的String对象(字符串)里面没有trim方法,使得很多时候在判断的时候挺无奈
刚刚看到了prototype.js的源码,发现里面实现了这个方法,用的方法其实很简单——
用正则表达式来把首位的空格替换成空串。代码如下
replace(/(^\s*)|(\s*$)/g,  "");

如果要更进一步给String定义一个trim函数,可以用如下代码
String.prototype.trim = function(){
  return this.replace(/^\s*|\s*$/g, "");
}

非常简单,却非常牛B
Sep 23
参考了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;
    }
}
Sep 23
IE给iframe设置的那个3D边框效果真是难看阿。。
不论怎么设置style中的border属性都没有用
后来在网上找到一篇文章[点击打开]
解决方案其实很简单:
<iframe src="ooxx.html" frameborder="0"></iframe>

OK,看起来舒服多了:)
Sep 21
一下代码来自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);
}
Sep 18
在写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
该网页详细介绍了几个很容易令人发疯的兼容性问题。。。。
Sep 18

Felix的javascript运行环境 不指定

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

点击这里打开:Felix的javascript运行环境
分页: 10/26 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页 [ 显示模式: 摘要 | 列表 ]