我现在遇到了一个问题:
我的页面是分成好几个模块的,每个模块都是使用Ajax
动态抓取然后使用innerHTML刷的,正常的文字没有问题。
但是如果里面含有脚本的话,里面的脚本不会执行。
找了好几种方案都行不通。
大家有没有什么好的解决方案?
谢谢!!!

解决方案 »

  1.   

    楼主不知道你的情况怎么样,但是我如果是通过添加对象的方法添加到当前对象下作为一个子节点的话,JS是有效的,比如"<script>alert(1)</script>"把它放在某个TD下,当通过AJAX加载的时候是会显示弹出1的
      

  2.   

    AJAX返回的模块加个类型json{
      jsString:'...'
      ,html:'...'
    }
    后面应该会处理了吧
      

  3.   

    由于我要刷的页面比较复杂,我是使用Ajax从后台抓取,
    然后直接使用innerHTML刷的DIV,不能使用DOM函数来操作,
    那样的话代码量就会很大而且会很复杂的。
      

  4.   

    $.getScript('test.js')   用这个呢
      

  5.   

    js 逻辑处理 函数,放前面
    ajax 去请求服务器数据然后回调 函数处理 从服务器获取的逻辑
    逻辑代码,没必要反反复复从服务器重新加载撒
      

  6.   

    eval没法试验啊。
    我动态加载的有的是代码块,有的是一个外部JS文件。
      

  7.   

    不是那样 的。
    比如说我的一个模块可能给别的第三方的网站放广告使用,
    它们都会在自己的页面里写一些JS文件,
    这是我控制不了的。
    使用Ajax加载的时候导致第三方的网站JS文件
    不会执行,现在就是这个问题。
      

  8.   

    htmlencode是哪里的函数?是ASP的吗?
    我的是静态页面。
      

  9.   

    那就对加载的代码进行分析,如果在<script>和</script>内的就eval,否则放行!
      

  10.   


    但是有一种例外啊,那就是<script>和</script>中间
    的不是JS代码,而是一个外部JS文件,那又该怎么办呢?
      

  11.   

    那你这样说“外部JS文件”就没有执行的可能了?
    能不能把返回数据交给一个隐藏页面执行,把结果即dom返回到本页面中来!
      

  12.   


    这个就是典型的xss漏洞案例,赋值innerHTML,执行一个脚本
    哥给你指条路,自己玩去:
    element.innerHTML = '<img src="*" onerror="alert(/hello world/)" />';
      

  13.   

    ⊙﹏⊙b汗。
    没想到跟XSS都扯上关系了。
    那就是没有办法了。
    那要是页面分模块使用Ajax来抓取的话,那抓取的内容
    就不能带JS脚本了。。