我一直在使用XMLHttpRequest加载我的javascript文件并将其插入到我的html文件的头部。我试过了:
var headNode = document.getElementsByTagName('head')[0];
var js = document.createElement("script");
js.type = "text/javascript";
js.src = this.url.replace(project.basePath,'');
headNode.appendChild(js);
这样可行,但是当我这样做时,我有一个计时问题,因此无法调用任何函数。我现在尝试另一种方式,我可以从js文件中获取代码字符串并将其插入到头部,当我这样做时它会清除我的html并且只添加新代码。
var code= this.ajaxRequest.responseText;
script.write('<script>'+code+'</script>')
是否可以将其附加到头部(例如,这不起作用);
var code= this.ajaxRequest.responseText;
var headNode = document.getElementsByTagName('head')[0];
var script = document.createElement("script");
script.write('<script>'+code+'</script>')
headNode.append(script)
提前感谢您的帮助。 p.s我没有使用jquery。
答案 0 :(得分:1)
您尝试的第一种方法失败,因为XmlHttpRequest(也称为ajax请求)是异步的。
因此,当您的脚本加载时,您的其他脚本标记代码将被执行(在加载脚本文件之前)。
您可以通过在javascript中使用事件处理来解决此问题。 您可以创建一个名为“已加载”的自定义事件并将其分派。
在包含代码的其他脚本标记中,为同一事件添加事件侦听器。
在事件处理或事件监听器函数中,调用脚本加载后要执行的所需函数。
你的第二种方法失败了,因为document.write或document.append覆盖了文档,如果在渲染html页面之后使用它。
因此,应避免在页面显示后使用此功能。
P.S - 很抱歉我无法提供任何演示代码,因为我正在通过手机回答这个问题。
答案 1 :(得分:0)
你可以只评估()响应文本吗?
答案 2 :(得分:0)
你的&lt;解析器错误/脚本&GT;在代码中。
试
var code= this.ajaxRequest.responseText;
script.write('<script>'+code+'</scr'+'ipt>');