我的脚本追加函数不起作用
my script appending function doesn't work
我已经构建了这个函数来检查是否已经将脚本或样式表添加到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[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);
}
}
}
我这样调用函数
appendScript('_css/style.test.css', 'link');
appendScript('_scripts/_js/script.test.js', 'script');
控制台日志中没有任何错误。但问题是,它并不能阻止脚本再次被追加。有人能看出这个错误吗?
使用相对路径作为参数。浏览器将其转换为绝对路径。所以你必须使用绝对路径。像这样:
appendScript('http://stackoverflow.com/_scripts/_js/script.test.js', 'script');
我认为这是因为你使用了相对url。如果您检查与"path"比较的元素的"src"属性,它将包含协议和主机,因此它不会匹配。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- Ember Data DS.Model's set函数不起作用
- Javascript:If-then语句在函数中不起作用
- JavaScript链接在点击时不起作用;函数在页面加载时工作
- AngularJS指令部分应用的函数don'不起作用
- 为什么我的JavaScript堆栈排序函数不起作用
- 嵌套到另一个函数中的Fancybox函数;不起作用
- Javascript onchange()函数不起作用
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- javascript函数调用不起作用
- 另一个Ajax函数触发的Ajax函数不起作用
- 从PHP调用JS函数不起作用
- 清除函数中if语句内部不起作用的间隔
- js函数堆栈传入变量,.hide()不起作用
- jQuery validate函数不起作用
- jQuery克隆函数在chrome中不起作用
- JS-窗口宽度函数不起作用
- 函数调用不起作用
- .hasClass 在 onclick 函数中不起作用,但删除和添加类函数可以
- javascript函数,该函数不起作用,但不会显示任何错误