innHTML后执行其内的js

[ 2014-05-26 10:25:33 | 作者: admin ]
字号: | |
晚上看人人网,ajax里返回html内有script,源码中貌似用innerHTML的,what?怎么可能。
innerHTML不执行字符串内脚本的。源码中发现:
$('ajaxContainer').innerHTML = r.responseText;
$('ajaxContainer').eval_inner_JS();

eval_inner_JS??啥个东东?应该是把script标记又抽离出来单独创建运行吧。

自己写个,暂时还没完全测试,先放着留个思路:

     
        executjavaScriptString: function (scriptText) {
               var element = document.createElement('script');
               element.type = 'text/javascript';
               try {
                    element.innerHTML = scriptText;
               } catch (e) {
                    element.text = scriptText;
               }
               document.body.appendChild(element);
               //创建流执行后立即删除节点
               setTimeout(function(){
                    jsCore.DOM.removeNode(element);
               },0);
        },

     
        executInnerjavaScript:function(element) {
               var scripts = element.getElementsByTagName_r('script');
               for (var i = 0,len=scripts.length; i < len; i++) {
                    if (scripts[i].src) {
                    var script = document.createElement('script');
                    script.type = 'text/javascript';
                    script.src = scripts[i].src;
                    document.body.appendChild(script);
                    //创建流执行后立即删除节点
                    setTimeout(function(){
                    jsCore.DOM.removeNode(element);
                    },0);
                    } else {
                    try {
                    jsCore.DOM.executjavaScriptString(scripts[i].innerHTML);
                    } catch (e) {}
                    }
               }
        },
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2200

这篇日志没有评论。

此日志不可发表评论。