Skip navigation.

crocodile's blog

a python lover

Posts tagged with "javascript"

body.appendChild 已终止操作

document.body.appendChild() 会导致站点无法正常加载。

出现提示:Internet Explorer无法打开Internet站点 ×××?? 已终止操作。



通常这种问题只在IE中出现。而在firefox中却不会,因为Firefox的body在body标签没有被浏览器完全读入之前就存在;而IE的body则必须在body标签被浏览器完全读入之后才存在.

解决办法:

1、在一个已加载的对象上调用appendChild(),来创建对象。

2、页面加载完毕后,再执行document.body.appendChild()动作,可以把它放到</body>后面。

3、用window.setTimeout(),来延时对document.body.appendChild()的调用。

我们重点来讨论第二种解决办法。
要让页面加载完后,在执行动作,可以在</body>用js绑定document.body.onload方法,但是在firefox下document.body.onload是undefined,因此在firefox下是可以用window.onload来代替
<script type="text/javascript">
function init(arg){
        //do sth.
}
if(typeof(document.body.onload)=="undefined")
        window.onload=goto_page(arg);
else
        document.body.onload=new Function('goto_page(arg);');
</script>



javascript接收url参数的方法

function getParameter(param){
    var query = window.location.search;
    var iLen = param.length;
    var iStart = query.indexOf(param);
    if (iStart == -1)
      return "";
    iStart += iLen + 1;
    var iEnd = query.indexOf("&", iStart);
    if (iEnd == -1)
      return query.substring(iStart);
    return query.substring(iStart, iEnd);
 }

一个js的日期格式化函数

<script type="text/javascript">
Date.prototype.format = function(format)
{
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(),    //day
"h+" : this.getHours(),   //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3),  //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format))
format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] :("00"+ o[k]).substr((""+ o[k]).length));
return format;
}

var ddd = new Date();
document.write (ddd.format('yy-MM-dd'));
</script>

firefox和IE对对于DOM ChildNodes集合处理的不同点

在IE和FF对于DOM ChildNodes集合的处理方式上,
IE只算NODE的object,而FF把object text也算一个ChildNode了.