onload之后document.write会覆盖原html

clal 2010-01-21 05:58:37
1.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>test</title>
</head>
<body>
如果不显示,则html被覆盖
<script type="text/javascript">
alert("1.html");
document.write("<img id=\"curImgs\" onerror=\"errorfn()\" onload=\"successfn()\" src=\"image.aspx\" style=\"width:0px;height:0px;border:0px;\" />");
function successfn()
{
document.write("<scr" + "ipt type=\"text/javascript\" src=\"1.js\"></scr" + "ipt>");
}
function onerrorfn()
{
var scripts = document.createElement("script");
scripts.type = "text/javascript";
scripts.src = "image.aspx";
document.body.appendChild(scripts);
}
</script>
</body>
</html>


1.js

alert("1.js");

有个需求需要用到Img的onerror来判断状态
造成了现在的情况.
这其中1.js为外部脚本,无法修改,并且1.js里面有多次输出其它脚本document.write形式
我也试过重写document.write将document.write改成appendChild,但中间有多次输出其它脚本实际效果不好.
...全文
357 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
clal 2010-01-23
  • 打赏
  • 举报
回复
先谢谢各位了.
问题已经换了种办法解决了.
cyqlightrain 2010-01-22
  • 打赏
  • 举报
回复
有两种方法解决lz的问题.
1. 直接加载1.js文件并放在隐藏的div中,当img error的时候对这个隐藏div进行操作.
2. 用隐藏的Iframe来进行js输出,并获取这个Iframe的内容进行操作.
ck11926375 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cyqlightrain 的回复:]
onload后或js defer的话就不要用document.write了.
直接用createElement来实现你要的功能吧.
[/Quote]

同意!
cyqlightrain 2010-01-22
  • 打赏
  • 举报
回复
onload后或js defer的话就不要用document.write了.
直接用createElement来实现你要的功能吧.
h155290688 2010-01-22
  • 打赏
  • 举报
回复
document.write()当然会把当前的文本覆盖啊,可以是这样
document.write(document.body.innerHTML+yourCode);
浴火_凤凰 2010-01-22
  • 打赏
  • 举报
回复
不太明白楼主的需求,楼主为什么要搞这么复杂呢?

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧