我可以使用CSS隐藏脚本行吗?例如,如果我们在脚本行中添加了一个class =“slider”,如下所示:
<script class="slider" type="text/javascript" src="assets/js/slider.js"></script>
然后在css中我们做了:
.slider {display: none}
我想要的原因是我想在调用特定样式表时启用js
答案 0 :(得分:2)
查看此相关问题,找到通过JavaScript添加CSS的方法:Dynamically loading css file using javascript with callback without jQuery
答案 1 :(得分:0)
至少目前,假设您只在文档加载期间加载样式表。然后,您可以执行以下操作:
function checkLoadedSheetsForHref(href) {
for (var i = 0; i < document.styleSheets.length; ++i) {
if (document.styleSheets[i].href == href) {
// or if you just want to check the filename, check if href contains it:
// if (document.styleSheets[i].href.indexOf(href) != -1) {
return true;
}
}
return false;
}
document.onload = function() {
if (checkLoadedSheetsForHref("assets/js/slider.js")) {
// enable whatever js you want
}
}
如果您有动态加载样式表的内容,您可以设置定时器以等待表单加载,或者将onload
添加到添加它的任何内容中,或者只检查您正在加载的字符串。 / p>
答案 2 :(得分:0)
我会这样做。自我解释:
var SliderVar = document.getElementById("slider");
if (SliderVar.style.display == "none") {
var showScript = false;
} else {
var showScript = true;
}
if(showScript) {
var sc = document.createElement('script');
sc.src = 'assets/js/slider.js';
sc.type = 'text/javascript';
if(typeof sc['async'] !== 'undefined') {
sc.async = true;
}
document.getElementsByTagName('head')[0].appendChild(sc);
}