Javascript 我的脚本附加函数没有';行不通
我构建了这个函数来检查是否有脚本或样式表已经附加到HTML中的head标记。如果脚本已经存在,函数应该防止再次追加相同的引用 这是我的代码:Javascript 我的脚本附加函数没有';行不通,javascript,function,append,Javascript,Function,Append,我构建了这个函数来检查是否有脚本或样式表已经附加到HTML中的head标记。如果脚本已经存在,函数应该防止再次追加相同的引用 这是我的代码: function appendScript(path, type) { var x = document.getElementsByTagName(type); var header_already_added = false; for (var i=0; i< x.length; i++){ if (x
function appendScript(path, type) {
var x = document.getElementsByTagName(type);
var header_already_added = false;
for (var i=0; i< x.length; i++){
if (x[i].src == path || x[i].href == path){
// ... do not add header again
header_already_added = true;
}
}
if (header_already_added == false){
var head = document.getElementsByTagName('head')[0];
// We create the style
if (type == 'link') {
var style = document.createElement('link');
style.setAttribute("rel", "stylesheet");
style.setAttribute("type", "text/css");
style.setAttribute("href", path)
head.appendChild(style);
} else if (type == 'script') {
var script = document.createElement('script');
script.setAttribute("type", "text/javascript");
script.setAttribute("src", path);
head.appendChild(script);
}
}
}
控制台日志中没有任何错误。。但问题是,它不会阻止脚本再次被追加。有人能发现错误吗?我想这是因为你使用了相对URL。如果检查与“路径”比较的元素的“src”属性,它将包含协议和主机,因此它将不匹配。你需要考虑这一点。 你使用相对路径作为参数。浏览器将其转换为绝对路径。所以你必须使用绝对路径。就像这样:
appendScript('http://stackoverflow.com/_scripts/_js/script.test.js', 'script');
您能给我们看一下您文档的
或
标记的示例吗?我看到style.setAttribute(“href”,path)
后面缺少一个分号,有可能就是这样吗?谢谢。。立即工作:)我很惊讶我的函数实际上写得很完美。。
appendScript('http://stackoverflow.com/_scripts/_js/script.test.js', 'script');