论坛首页 Web前端技术论坛

为什么responseText返回的文本中css和javascript不起作用?

浏览 7786 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-07  
我用ajax技术返回一个页面(只有body中数据),其中包含css和javascript,在把它付给一个标签后,其中css和javascript在IE中不起作用,在firefox中javascript不起作用,这是为什么?
如:function responseResult(req) {
       document.getElementById("result").innerHTML = req.responseText;
       /*responseText中包含css和javascript脚本*/

}
<div id="result">
</div>

请问诸位该如何解决这个问题?急
   发表时间:2006-12-08  
的确不会起作用的,req.responseText中的js封装成函数,写在发起请求的页面中,然后在执行完innerHTML=req.responseText后,把函数和新的到的某个dom元素的事件关联上
0 请登录后投票
   发表时间:2006-12-08  
你吧那个JS写在包含“<div id="result"> “的页面中试试。
css应该会显示,我也是用”document.getElementById("result").innerHTML = req.responseText;
“这种方式处理的,它的CSS都起作用了,
0 请登录后投票
   发表时间:2006-12-08  
给你段函数琢磨去吧。
关于css,没必要重新加载,因为“父窗体”很可能包含这个css了,如果跨域网页,引入css比引入js文件危险的多,可能会破坏你的布局。

但引入js也是有危险的。

from http://www.jackslocum.com/
update : function(html, loadScripts){
        this.dom.innerHTML = html;
        if(!loadScripts) return;
        
        var dom = this.dom;
        var _parseScripts = function(){
            var s = this.dom.getElementsByTagName("script");
            var docHead = document.getElementsByTagName("head")[0];
            
            //   For browsers which discard scripts when inserting innerHTML, extract the scripts using a RegExp
            if(s.length == 0){
                var re = /(?:<script.*(?:src=[\"\'](.*)[\"\']).*>.*<\/script>)|(?:<script.*>([\S\s]*?)<\/script>)/ig; // assumes HTML well formed and then loop through it.
                var match;
                while(match = re.exec(html)){
                     var s0 = document.createElement("script");
                     if (match[1])
                        s0.src = match[1];
                     else if (match[2])
                        s0.text = match[2];
                     else
                          continue;
                     docHead.appendChild(s0);
                }
            }else {
              for(var i = 0; i < s.length; i++){
                 var s0 = document.createElement("script");
                 s0.type = s[i].type;
                 if (s[i].text) {
                    s0.text = s[i].text;
                 } else {
                    s0.src = s[i].src;
                 }
                 docHead.appendChild(s0);
              }
            }
        }
        // set timeout to give DOM opportunity to catch up
        setTimeout(_parseScripts, 10);
    }
0 请登录后投票
   发表时间:2006-12-08  

谢谢各位,基本知道怎么做了

0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics