为什么在 css 工作时不加载 js 一次不起作用?
Why won't loading js once doesn't work when css works?
这只加载 css 一次就好了。
if (filetype=="css" && !document.querySelector('.load_once') ) {
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
fileref.setAttribute("class", "load_once")
}
但是,相同的脚本不适用于 js 文件。
if (filetype=="js" && !document.querySelector('.load_once') ) {
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
fileref.setAttribute("class", "load_once")
}
我已经解决了这个问题,方法是在函数触发后清空函数,这样函数只触发一次。
不过,我还是想知道为什么上面的脚本只适用于 css 文件而不适用于 js 文件。
我做错了什么?
我不明白为什么这不起作用。
这是 javascript 的怪癖之一吗? javascript 本身存在某种错误?
编辑
请问。请参阅下面我对 Borcuhin 评论的回复。
我的论点是苹果是红色的还是
红苹果!=红橙。
所以从逻辑上讲,我认为我上面的脚本应该有效;但事实并非如此!!
有人请 explain/correct 我 & 让我知道如何以及为什么 javascript treats/thinks 阅读苹果与红橙相同。
您可以像这样插入脚本标签:
var script = document.createElement('script');
script.setAttribute('src', '/script.js');
// put tag to the head
document.getElementsByTagName('head')[0].appendChild(script);
更新
您需要为每个文件包含使用不同的 classes。因为一旦您使用 class some_class_name
添加标签,选择器:document.querySelector('.some_class_name')
会找到 1 个元素。所以你只需要对 js 文件或其他文件使用 some_other_class_name
,或者随机生成 classname 如果你可以有 N
个不同的文件
这只加载 css 一次就好了。
if (filetype=="css" && !document.querySelector('.load_once') ) {
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
fileref.setAttribute("class", "load_once")
}
但是,相同的脚本不适用于 js 文件。
if (filetype=="js" && !document.querySelector('.load_once') ) {
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
fileref.setAttribute("class", "load_once")
}
我已经解决了这个问题,方法是在函数触发后清空函数,这样函数只触发一次。
不过,我还是想知道为什么上面的脚本只适用于 css 文件而不适用于 js 文件。
我做错了什么?
我不明白为什么这不起作用。
这是 javascript 的怪癖之一吗? javascript 本身存在某种错误?
编辑
请问。请参阅下面我对 Borcuhin 评论的回复。
我的论点是苹果是红色的还是
红苹果!=红橙。
所以从逻辑上讲,我认为我上面的脚本应该有效;但事实并非如此!!
有人请 explain/correct 我 & 让我知道如何以及为什么 javascript treats/thinks 阅读苹果与红橙相同。
您可以像这样插入脚本标签:
var script = document.createElement('script');
script.setAttribute('src', '/script.js');
// put tag to the head
document.getElementsByTagName('head')[0].appendChild(script);
更新
您需要为每个文件包含使用不同的 classes。因为一旦您使用 class some_class_name
添加标签,选择器:document.querySelector('.some_class_name')
会找到 1 个元素。所以你只需要对 js 文件或其他文件使用 some_other_class_name
,或者随机生成 classname 如果你可以有 N
个不同的文件