Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1102562
  • 博文数量: 1310
  • 博客积分: 3980
  • 博客等级: 中校
  • 技术积分: 8005
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-09 22:05
文章分类

全部博文(1310)

文章存档

2011年(1)

2008年(1309)

我的朋友

分类:

2008-11-09 17:41:18


工作需要要将一些服务端返回的js动态的写入到某个div中,在编写过程中发现如下两个问题:

1、不能用innerHTML向div中写入""。
解决办法:
(1)在添加一个其他的html标记:obj.innerHTML="
";
(2)使用如下脚本:
var obj=document.getElementById("test");
var str="alert('xx');var a=100;document.write(a);document.write('aaaa')";
var oScript=document.createElement("script");
oScript.text
=str;
obj.appendChild(oScript);
2、无法执行脚本中的document.write脚本,或者说执行时把页面内容清空了。
原因:document.write只有在加载时执行才不会清空页面内容,其他时间执行则会清空页面内容。

解决办法:既然document.write的目的就是在指定的div中写入内容,把脚本中的document.write替换为innerHTML不久ok了吗?

经过多次测试终于ok了。
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns=""  xml:lang="zh-CN" lang="zh-CN">
    
<head>
    
<title>title>
    
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
head>
<body>
<div id="test">

div>
<input type="button" onclick="test()" />
<script type="text/javascript">
function addScript(id,str){
    window.execScript((str
+";").replace(/<\/?script[^\)]*>/ig,"").replace(/document.write\((.*?)\)[\s;]/ig,function(){
        
return ("document.getElementById('"+id+"').innerText+="+arguments[1]+";");
    }));
}

window.onload
=function(){
var id="test";
var str="alert('xx');\nvar a=100;document.write('(xxx)');document.write('aaaa')\n";
addScript(id,str)
};
script>
body>
html>



Yemoo'S JS Blog 2007-07-19 11:19 发表评论
阅读(266) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~