问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何让动态插入的javascript脚本代码跑起来

发布网友 发布时间:2022-04-28 16:34

我来回答

1个回答

热心网友 时间:2022-04-22 13:29

用XMLHttpRequest和window.execScript动态的执行a.js,这个方法的优点比较明显,但效率可能有所下降,没有测试,有兴趣的朋友可以自己测试一下速度。   
代码如下: <script language="javascript">    
function bar(u) {    
   var x=window.ActiveXObject?new ActiveXObject("MSXML2.XMLHTTP"):new XMLHttpRequest();    
   x.open("GET",u,false);    
   x.send(null);    
   s=x.responseText;    
   try {window.execScript(s)}catch(ex){window.eval(s)};//Mozilla下window.eval大致与IE的window.execScript方法功能相同    
}    
bar("a.js");    
foo();    
</script>但这个方法仍有缺点,也就是a.js脚本中的代码有中文的情况,如何处理?那就要经常解码了,而解码恰恰是js的软肋,如果运用VBs来解码,那么兼容也就没有了。要看自己具体的应用了,我在neverMoles里加载js包时用的就是window.execScript方法来解析代码,这样更可以配合js
 namespace的应用    
加上脚本解码(用vbs来解码):    
 <script type="text/javascript">    
 //<![CDATA[    
  function bar(u) ...{    
    var x=window.ActiveXObject?new ActiveXObject("MSXML2.XMLHTTP"):new XMLHttpRequest();    
     x.open("GET",u,false);    
     x.send(null);    
     s=parseScript(x.responseText);    
    try ...{window.execScript(s)}catch(ex)...{window.eval(s)};    
   }    
  function parseScript(jscode) ...{    
 // --- toCurrentCharset(), by aimingoo 解码    
 window.execScript(''+    
 'Function Asc2Unicode(n) '+    
 ' Asc2Unicode = Chr(n) '+    
 'End Function '+'Function SafeArray2Str(body) '+   
 ' SafeArray2Str = CStr(body) '+    
 'End Function','VBScript');
var r1 = /%u(..)(..)/g, r2 = /%([8,9,A-F].)%(..)/g;   
 var toUnicode = function($0, $1, $2) ...{return Asc2Unicode(parseInt($1+$2, 16))}    
 toCurrentCharset = function(body) ...{    
 return unescape(escape(SafeArray2Str(body)).replace(r1, "%$2%$1").replace(r2, toUnicode));    
 }; jscode=toCurrentCharset(jscode);     
     window.execScript(jscode, 'JavaScript'); //IE有效,vbs解码    
    return jscode;    
 }
   bar('a.js');
   foo();   
 //]]>    
 </script>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 龙湖栖贤谷景区开工建设了吗 谢鲁山庄为何被称为全国四大私人庄园之一? 逆水寒怎么提高风水值 麻花如何做好吃? 关于darklore manor(darklore庄园)的详细! 我的世界林地庄园介绍 煮麻花应该怎么做好吃 逆水寒庄园美观值怎么提升 明日之后哪位大神有这个庄园教程 平安保单宝贷款怎么贷 沣峪庄园大门到山顶的瀑布需要几小时 麻花怎么做好吃,小麻花的家常做法 农村建房大门尺寸选择多大的最合适 麻花怎么做如何做好吃 莫氏庄园的主要景点 平安保单宝申请流程 怎样做猪脚烧麻花好吃不会腻香飘十里? 姜氏庄园的建筑 炒麻花怎么做如何做好吃 四川哪里藏了一处“豪宅”?占地百亩,内里布局零乱,仿佛置身迷宫。 如何实现Javascript的include功能? JavaScript回调函数是怎么实现非阻塞的 求JavaScript漂浮广告代码 javascript代码求助 广告层跟随屏幕滚动 熟悉网页制作的请进,如何在网页打开后30秒再加载广告? 用javascript动态加载的内容不能再次执行javascript。 JAVASCRIPT代码如何在网页中呈现动态效果 如何不定义函数和过程,利用JAVASCRIPT在页面上插入广告? 如何在地址栏中输入一段js代码,使当前页面动态载入一段js脚本文件!_百 ... 如何在页面中异步加载css/js,写出对应的loadcss,loadjs function_百度知... 台式电脑怎么用wifi 台式机连wifi攻略 用台式电脑怎么开wifi 如何策划一场浪漫的婚礼 恐龙吃哪些食物? 恐龙主要吃什么食物? 恐龙喜欢吃什么呢? 虚假广告的表现形式 恐龙都吃什么? 常见的虚假广告有什么? 恐龙吃什么东西