我有这个代码......
<script type="text/javascript">
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "Client-Controls/ClientGridView.xml", true);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
var oHead = document.getElementsByTagName('HEAD').item(0);
var x = xmlDoc.getElementsByTagName("script");
for (i = 0; i < x.length; i++) {
var oScript = document.createElement("script");
oScript.language = "javascript";
oScript.type = "text/javascript";
oScript.src = x[i].childNodes[0].nodeValue;
oHead.appendChild(oScript);
}
</script>
这渲染了一些,但我不能使用javascript文件函数......可以做什么诀窍??
答案 0 :(得分:0)
您的脚本将异步加载,因此您无法立即使用它们。给他们一个onload处理程序,以便你知道他们什么时候准备好了:
var oScript = document.createElement("script");
oScript.type = "text/javascript";
oScript.src = x[i].childNodes[0].nodeValue;
oScript.onload = function () {
// run bar, which is contained in foo.js
bar();
};
oHead.appendChild(oScript);
如果您想确保所有脚本都已加载,您可以创建一个计数器:
function counter(count, callback) {
return function() {
count -= 1;
if (count === 0) {
callback();
}
}
}
并将其传递给每个加载处理程序:
var x = xmlDoc.getElementsByTagName("script"),
countdown = counter(x.length, function(){ alert("All scripts loaded!"; });
for (i = 0; i < x.length; i++) {
var oScript = document.createElement("script");
oScript.type = "text/javascript";
oScript.src = x[i].childNodes[0].nodeValue;
oScript.onload = countdown;
oHead.appendChild(oScript);
}
答案 1 :(得分:0)
扩展丹尼斯的观点,在Javascript
文件中添加一个您尝试获取的变量并检查该变量是否存在或是否为整数,请检查值。无论如何,您可以在Javascript中轻松完成此操作。这有两种方式。
选项一
var neededScript = document.createElement("script");
n//if you want the script to be asynchronous, then set the async attribute like this:
neededScript.async="";
//then point the [src] attribute to the required script.
neededScript.src="src";
document.head.appendChild(neededScript);
&#13;
script
附加到body
,则代替document.head.appendChild
使用document.body.appendChild
。您可以使用document.getElementById
或document.getElementsByClassName
将子项附加到任何元素,或者如果您想按标记名称过滤元素(<html>
是标记),请使用document.getElementByTagName
或 - my来自jQuery的个人喜爱 - document.querySelector
。您应该阅读所有这些方法,因为它们对操纵DOM至关重要。
var requiredScriptSrc="src";
$("head").append("<script src='"+requiredScriptSrc+"'></script>");
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
selectors
,如果你尝试过CSS或document.querySelector
,你应该熟悉它们。
custom tags
和for
循环获取custom tag
的属性并创建脚本元素。
for(var i = 0; i<document.getElementsByTagName("js-module").length; i++){
var s = document.getElementsByTagName("js-module")[i].getAttribute("src");
var r = document.createElement("script");
r.src = s;
document.head.appendChild(r);
}
&#13;
<js-module src="src"></js-module>
&#13;
如果您需要更多帮助,请对此帖发表评论。