不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
动态导入js引发的问题
编辑:dnawo 日期:2009-06-29
比较常见的用于动态导入js的方法有以下两种:
今天做动态导入时发现了问题,t.js内容如下:
调用代码:
脚本出错,提示缺少对象(使用方法二也有同样的问题)。为了说明问题,我们稍做修改,t.js内容如下:
调用代码:
可以看到,是先弹出"index.htm",再弹出"t.js",这说明t.js的导入是在页面脚本执行完后进行的,在执行M()时,M函数还未声明,因而报错。解决方法:
采用上边方法的不足是:当index.htm和t.js不在同一台服务器上时,index.htm脚本执行会出错,提示没有权限。下边代码摘自QQ首页,测试通过:
参考文章
·《如何让动态插入的javascript脚本代码跑起来》
复制内容到剪贴板
程序代码

//方法一
document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\"t.js\"><\/script>");
//方法二
var script = document.createElement("script");
script.src = "t.js";
script.type = "text/javascript";
document.getElementsByTagName("head").item(0).appendChild(script);
document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\"t.js\"><\/script>");
//方法二
var script = document.createElement("script");
script.src = "t.js";
script.type = "text/javascript";
document.getElementsByTagName("head").item(0).appendChild(script);
今天做动态导入时发现了问题,t.js内容如下:
复制内容到剪贴板
程序代码

function M(){alert("m");}
调用代码:
复制内容到剪贴板
程序代码

document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\"t.js\"><\/script>");
M();
M();
脚本出错,提示缺少对象(使用方法二也有同样的问题)。为了说明问题,我们稍做修改,t.js内容如下:
复制内容到剪贴板
程序代码

function M(){alert("m");}
alert("t.js");
alert("t.js");
调用代码:
复制内容到剪贴板
程序代码

document.write("<script language=\"JavaScript\" type=\"text/javascript\" src=\"t.js\"><\/script>");
alert("index.htm");
alert("index.htm");
可以看到,是先弹出"index.htm",再弹出"t.js",这说明t.js的导入是在页面脚本执行完后进行的,在执行M()时,M函数还未声明,因而报错。解决方法:
复制内容到剪贴板
程序代码

<script>
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("t.js");
M();
</script>
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("t.js");
M();
</script>
采用上边方法的不足是:当index.htm和t.js不在同一台服务器上时,index.htm脚本执行会出错,提示没有权限。下边代码摘自QQ首页,测试通过:
复制内容到剪贴板
程序代码

<script type="text/javascript">
var MiniSite=new Object();
MiniSite.Browser={
ie:/msie/.test(window.navigator.userAgent.toLowerCase()),
moz:/gecko/.test(window.navigator.userAgent.toLowerCase()),
opera:/opera/.test(window.navigator.userAgent.toLowerCase()),
safari:/safari/.test(window.navigator.userAgent.toLowerCase())
};
MiniSite.JsLoader={
load:function(sUrl,fCallback){
var _script=document.createElement('script');
_script.setAttribute('charset','gb2312');
_script.setAttribute('type','text/javascript');
_script.setAttribute('src',sUrl);
document.getElementsByTagName('head')[0].appendChild(_script);
if(MiniSite.Browser.ie){
_script.onreadystatechange=function(){
if(this.readyState=='loaded'||this.readyStaate=='complete'){
fCallback();
}
};
}else if(MiniSite.Browser.moz){
_script.onload=function(){
fCallback();
};
}else{
fCallback();
}
}
};
MiniSite.JsLoader.load("http://www.mzwu.com/t.js",function(){M();});
</script>
var MiniSite=new Object();
MiniSite.Browser={
ie:/msie/.test(window.navigator.userAgent.toLowerCase()),
moz:/gecko/.test(window.navigator.userAgent.toLowerCase()),
opera:/opera/.test(window.navigator.userAgent.toLowerCase()),
safari:/safari/.test(window.navigator.userAgent.toLowerCase())
};
MiniSite.JsLoader={
load:function(sUrl,fCallback){
var _script=document.createElement('script');
_script.setAttribute('charset','gb2312');
_script.setAttribute('type','text/javascript');
_script.setAttribute('src',sUrl);
document.getElementsByTagName('head')[0].appendChild(_script);
if(MiniSite.Browser.ie){
_script.onreadystatechange=function(){
if(this.readyState=='loaded'||this.readyStaate=='complete'){
fCallback();
}
};
}else if(MiniSite.Browser.moz){
_script.onload=function(){
fCallback();
};
}else{
fCallback();
}
}
};
MiniSite.JsLoader.load("http://www.mzwu.com/t.js",function(){M();});
</script>
参考文章
·《如何让动态插入的javascript脚本代码跑起来》






评论: 0 | 引用: 0 | 查看次数: 4782
发表评论
请登录后再发表评论!