`

document.body.appendChild引起的【InternetExplorer无法打开Internet站点】

阅读更多
   “InternetExplorer无法打开Internet站点……已终止操作”是由document.body.appendChild引起的,document.body.appendChild本身来说这句代码是没有任何问题的,怪就怪在我加js的地方,因为页面在加载的时候就要执行js代码,所以我直接把js放在了页面里面,而且并没有放在window.onload的事件里。我不得不承认让js在window.onload的事件里执行非常保险,但是如果放在window.onload的事件里又会有另一个问题出现,那就是js加载过慢,甚至不加载,因为页面过大,或者有很多图片,flash等的时候,由于这些加载不成功就会导致页面永远执行不到window.onload事件,或者window.onload会很慢,那样就会影响整个页面的显示,这也是我们不愿看到的。为了更保险一点,又不至于加载过慢,我们会把js放在页面的最低端,事实上,就个人而言,我觉得是最好的解决方法。但是由于这个两个页面都是要及时显示,所以js就紧跟着页面标签的后面,所以就导致document.body.appendChild引发了InternetExplorer无法打开Internet站点的问题,因为js是解释执行的,当读到页面的某一行时,document.body并没有加载完成,或者说还正在加载,这个时候js向document.body添加一个子元素就会有冲突,继而导致了错误!

    事实上,如果不是在页面加载时执行js,而是在触发某个按钮后执行js的话,是不会有这个错误的,所以平时如果js是由某个按钮触发的时候,我们的js代码放在页面的任何地方都可以。

    解决方法也很多,首先我们可以把要添加的子元素不添加到body下面,而是添加到在这个元素之前已加载的某个元素里面,直接使用document.getElementById("channel_top").appendChild(newscript)即可,但这样往往会出现另一个问题,那就是当前新加的元素会受他父元素的css 的影响,这有时候又是我们不愿意看到的,那么另一个解决方法就是,直接把要加载的元素写在页面里面,而不要用js来添加,而且新加的元素也必须在放在js前面,否则就会找不到。
0
0
分享到:
评论

相关推荐

    html2canvas截图js

    //document.body.appendChild(canvas); //生成base64图片数据 var dataUrl = canvas.toDataURL(); var newImg = document.createElement("img"); newImg.src = dataUrl; document.body.appendChild(newImg); ...

    获取页面长宽和滚动条的位置

    document.body.appendChild(document.createTextNode("Hello, World!")); document.body.appendChild(document.createElement("br")); } var sz = GetPageSize(); alert([sz.PageW,sz.PageH,sz.WinW,sz....

    jqzoom放大镜插件.zip

    /* * JQZoom Evolution 1.0.1 - Javascript Image magnifier * ... * * $Date: 12-12-2008 * * ChangeLog: * * $License : GPL,so any change to the code you should copy and paste this section,and would ...

    Web遮罩層的實現方式

    document.body.appendChild(div); document.body.appendChild(img); } //隱藏整個IFrame function showIframe() { if(document.getElementById("InnerDiv")!=null) { document.body.removeChild...

    动态加载js文件 document.createElement

    代码如下:var Rash=true; var msg=””; function norash() { if (confirm(“确定要取消吗”)) Rash=false; } function rashit() { setInterval(‘getrss()’,Int... script=document.createElement(‘sc

    JS动态添加option和删除option(附实例代码)

    document.body.appendChild(mySelect); } 2.添加选项option 代码如下: function addOption(){ //根据id查找对象, var obj=document.getElementById(‘mySelect’); //添加一个选项 obj.add(new Option(“文本”,”...

    javascript 常用方法及技巧

    事件源对象 ...document.elementFromPoint(event.x,event.y).appendChild(ms) 窗体图片 document.images[索引] 窗体事件绑定 document.onmousedown=scrollwindow; 具体的下载下看挖 ------寒冰

    Internet Explorer无法打开Internet站点.docx

    Internet Explorer 无法打开 Internet 站点的解决方案 Internet Explorer 无法打开 Internet 站点是一种常见的浏览器问题,通常发生在使用 IE 内核浏览器时。该问题的出现可能是由于多种原因引起的,包括对 IE 的...

    JavaScript性能优化 创建文档碎片(document.createDocumentFragment)

    在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面就会更新并反映出这个变化,对于少量的更新,一条条循环插入也会运行很好,也是我们常用的方法。代码如下: 代码如下: for(var i=0;i<5;i...

    document.head:CommonJS 的 document.head polyfill

    CommonJS 的 document.head 垫片 这需要并将其放入 CommonJS。 使用 npm 安装它: npm install document.head 然后将它与 Browserify 或 Webpack 一起使用: var head = require ( 'document.head' ) ; head . ...

    通过JavaScript下载文件到本地的方法(单文件)

    最近在做一个文件下载的功能,这里把做的过程中用的技术和坑简要总结下。 1. 单文件下载(a标签) 同源单文件 针对单文件的情况下,同源的文件,可以通过 < a> ... document.body.appendChild(elt); elt.click(); d

    java代码大全

    document.elementFromPoint(event.x,event.y).appendChild(ms) • 窗体图片 document.images[索引] • 窗体事件绑定 document.onmousedown=scrollwindow; • 元素 document.窗体.elements[索引] • 对象绑定...

    【JavaScript源代码】vue 动态创建组件的两种方法.docx

    vue 动态创建组件的两种方法  Vue动态创建组件实例并挂载到body  import Vue from 'vue' /** * @param Component 组件实例的选项对象 * @param ... props }).$mount() document.body.appendChild(comp.$el) c

    无闪烁更新网页内容JS实现

    todo list 无闪烁更新网页的课题比较大。 ... 希望用一个不显示的iframe来承载这个对象。这有点dirty work的感觉。 最终解决方案是 代码如下:var str2DOM... document.body.appendChild(frame); frame.contentDocumen

    各种 javascript 弹出层 div

    document.body.appendChild(back); clearInterval(prox); clearInterval(proy); clearInterval(proxc); clearInterval(proyc); var o = document.getElementById(id); o.style.display = "block"; o.style...

    星空粒子特效 particles.rar

    1..在vue工程上应用时,可能会出现容器标签找不到的问题,此时... document.body.appendChild(oScript); 此时就不会出现容器标签不存在的错误提示了。 说明:上面的文件路径是你下载压缩包后放入到工程中的js文件路径。

    原生js二级联动效果

    今天说的这个是原生js的二级联动,在空白页面里动态添加并作出相对应的效果... document.body.appendChild(sel); document.body.appendChild(sel1); // 创建一个数组 var firstSelectArr = ["未选择","医院","学校",

    createElement与createDocumentFragment的点点区别小结

    网上可以搜到的大部分都是说使用createDocumentFragment主要是因为避免因createElement多次添加到document.body引起的效率问题,比如: 代码如下: var arrText=[“1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”...

    document.createElement()用法

    document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。其中,appendChild() 方法在节点的子节点列表末添加新的子节点。insertBefore() 方法在节点的子节点列表任意...

    html2canvas将网页保存成图片

    html2canvas将网页保存成图片:用法如下, html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); });

Global site tag (gtag.js) - Google Analytics