document.body.appendChild(ⅰ)

san*_*san 31 javascript internet-explorer-7 dom-events

我只是在IE7中收到错误,因为document.body为null,我调试Microsoft脚本编辑器在后续行中出错:ie

document.body.appendChild(i)代码:

function nm_eraseCookie(name){
    nm_createCookie(name,"",-1)
}
var i=document.createElement('IMG');
i.src='//e.netmng.com/pixel/?aid=403';
i.width=1;
i.height=1;
document.body.appendChild(i);
nm_createCookie('nm_belgacom_bt',
escape('tv1=bun_intvtel;tv2=;tv3=;phone1=hbs_discoveryline;phone2=hbs_classical_line;phone3=;inet1=bun_nettvmob;inet2=hbs_adsl_res_plus;inet3=hbs_adsl_res_go;nm_banner=;nm_popin=hbs_discoveryline;'),183);
Run Code Online (Sandbox Code Playgroud)

你可以告诉我我需要做些什么来解决这个问题.

Poi*_*nty 54

你可以试试

document.getElementsByTagName('body')[0].appendChild(i);
Run Code Online (Sandbox Code Playgroud)

现在,如果代码在运行,不会给你带来任何好<head>和运行之前<body>,甚至被通过浏览器看到的.如果您不想搞乱"onload"处理程序,请尝试将<script>块移动到文档的最末端而不是<head>.

  • 好指出在`<head>`中运行脚本.因为这个原因,我一直得到一个'无法调用方法'appendChild'的null.将它移动到文档的末尾将其固定为"<body>",当它在头部运行时不存在. (5认同)

san*_*san 16

这是工作.只需修改为null检查:

if(document.body!= null){document.body.appendChild(element); }

Pointy的建议很好; 它可能有用,但我没试过.


Utk*_*man 5

您可以appendChilddocument.body但如果文档尚未加载则不能。所以你应该把所有东西都放进去:

window.onload=function(){
    //your code
}
Run Code Online (Sandbox Code Playgroud)

这有效,或者您可以使其appendChild依赖于其他事件,例如另一个事件。

https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_doc_body_append

事实上,你可以尝试改变它的工作原理innerHTML...... document.body