2 rocksent rocksent 于 2014.12.03 19:55 提问

js文件加载问题求解,总是报错

试了各种方法都不好使
主要为了测试加载机制,以便把test.js提取出来加密
《script type="text/javascript" src="test.js" charset="utf-8"》 《/script》
《script》
test();//alert(123);test中就一个函数,弹出123;如此加载一切正常
《/script》

下面我来换种我很钟意的调用方式,就不行了,高手求解:

var str1="test.js";
var oHead=document.getElementsByTagName('head').item(0);
var oScript=document.createElement("script");
oScript.type="text/javascript";
oScript.src=str1;
oHead.appendChild(oScript);
test();//test undefined

我接着试着这几种操作,仍然无效:
1:更换相对绝对路径
2:最先载入:
window.onload=myLoadingJs(...);
$().ready(function(){test();})//still undefined
错误只有一个就是test()未定义,难道加载永远跑调用后面去了吗
//FF
顺便吐糟一下,提问的编辑器太渣了点,开始没光标,接着发不出去,接着遇到是发代码时不易操作,出来好多行虚线神马东西,然后遇到我script包着的js没显示,晕,光标又不见了,我去~
光标还是没出现,我得先打个abc才知道在哪块。顺再吐糟一下,CSDN的邮箱,里面神马东西,太乱了,一天到晚的亮我都找不到哪条造成一直红点的,没原来好了,我回答的问题别人再回答了,也通知我。。。谢谢了额。。。

1个回答

KK3K2005
KK3K2005   Rxr 2014.12.04 15:05
已采纳

var str1="test.js";
var oHead=document.getElementsByTagName('head').item(0);
var oScript=document.createElement("script");
oScript.type="text/javascript";
oScript.src=str1;
oHead.appendChild(oScript);
test();//test undefined

失败是因为 加载是一个异步的过程和需要时间

你apend完了(这个时候 script这个标签会加载代码 不过是异步的)
然后你直接 执行test.js里面的代码 当然没有

$.getScript("test.js",
function(){
test();
}
);
这个是jquery的动态加载 你在回调里面执行你的 test();

实际原因就是dom加载完后有一个加载成功的状态事件 浏览器兼容性实现方式不一样 所以不细说了你自己搜索下

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!