如何将字符串插入脚本标记?

时间:2014-03-14 00:11:03

标签: javascript

我一直在使用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。

3 个答案:

答案 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>');