首页 > 乱七八糟 > 用JavaScript动态输出的JS脚本不能执行

用JavaScript动态输出的JS脚本不能执行

  随着Ajax的越来越多地运用,HTML的内容又开始由“所见即所得”开始向“所见未必所得”发展了。这就是动态改变网页内容的魅力所在吧。

  在公司产品动易2006版整合接口的开发过程中,需要在客户端页面上输出一段调用远程接口写cookies的代码,最早的时候我是把调用url通过script的方式输出。在ASP输出HTML的时候,调试通过。

  动易2006的前台登陆表单已经采用了Ajax技术,页面上所看到的登陆表单并非直接由HTML代码在页面中写成,而是在页面加载以后,通过JS,通过Ajax,向服务器端的asp程序查询用户登录状态以后,再动态输出到页面的。

  一开始我通过JS,动态生成调用script的HTML代码以后,输出到页面,跟其它的HTML代码一样。结果出现了通行登陆不能同步的问题。用alert调试发现代码已经正确生成,显然用innerHTML输出到页面以后,是没有问题的。但是为什么没有登陆呢?

  为这个问题,折磨了我一晚上。天亮的时候跟动网公司的迷城浪子聊到这个问题,老迷没看我的脚本,只是听我讲了一遍,回答我说“JS输出的JS脚本不能被执行的吧?”

  难道真是这个问题?我把通过script调用改成通过img调用,还把图片大小设置成100*100,果然在页面上显示了,同步登陆也成功了。

  后来我写了一个段测试脚本,果然是js输出的js将不能执行。具体看下面的代码:








  在上面的例子中,可以看到页面执行了远程的js脚本,输出统计图标
  把代码修改如下:

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<div id="div">加载中...</div>
<script type="text/javascript" language="javascript">
var newStr = "<script src=\"http://s33.cnzz.com/stat.php?id=109006&web_id=108995&show=pic\" language=\"JavaScript\" charset=\"gb2312\"><\/script>";
document.getElementById("div").innerHTML = newStr;
</script>
</body>
</html>

  可以看到“加载中...”字样已经被下面的JS代码动态输出的代码替换了,但是并没有显示统计图标,说明script脚本调用代码已经被输出到页面,但是没有被执行。

  • Blogger Post
  • FriendFeed
  • Facebook
  • Digg
  • MSDN
  • Twitter
  • Yahoo Mail
  • Yahoo Bookmarks
  • MySpace
  • Ping
  • Webnews
  • Share/Bookmark
分类: 乱七八糟 标签: , ,
  1. 端木忧伤
    2006年4月16日23:45 | #1

    NB的eason也来这里啊?

  2. eason007
    2006年4月14日18:41 | #2

    很多开源的ajax开发包都有相应的处理函数,可以抄一个来用用。

  3. 小李刀刀
    2006年4月14日04:22 | #3

    [quote=eason007]写错,是取得代码片段之后,再动态在document里新增script元素。[/quote]

    谢谢指点,回头试试[f45]

  4. eason007
    2006年4月12日19:19 | #4

    写错,是取得代码片段之后,再动态在document里新增script元素。

  5. eason007
    2006年4月12日19:14 | #5

    因为ie安全等级的问题。你可以用正则取出相应代码段之后再evel

  6. 小李刀刀
    2006年4月12日12:49 | #6

    [quote=lthnds]请问用asp输出的JS呢?
    是否可以运行呢?[/quote]

    当然可以。

  7. lthnds
    2006年4月12日08:17 | #7

    请问用asp输出的JS呢?
    是否可以运行呢?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.