所以我有一个我正在研究的网站,其中一部分我们有一个嵌入式简报注册。问题是嵌入式代码使用了所有自己的样式表,这些样式表会干扰站点的设计。嵌入是通过javascript完成的,所以我不能禁用它们,直到页面的这一部分加载。
基本上我需要script
才能停用整个<link>
。最重要的是,links
没有任何classes
或ids
因此很难定位。
<link rel="stylesheet" type="text/css" href="http://www.formstack.com/forms/css/3/default.css?20130404">
这是我需要禁用的链接之一。我试着寻找像getElementByType
或类似的东西,但我找不到任何东西。
任何帮助将不胜感激。只要代码禁用了对我来说足够好的链接。也许有一种方法可以在文档中搜索<link>
字符串并用注释包围它吗?
谢谢你们
PS,我是一个javascript新手,不知道我在用js做什么
答案 0 :(得分:2)
var test = "http://www.formstack.com/forms/css/3/default.css";
for (var i = 0; i < document.styleSheets.length; i++) {
var sheet = document.styleSheets.item(i);
if (sheet.href.indexOf(test) !== -1) sheet.disabled = true;
}
这将起作用,但是效率很低(仍然),因为它在找到匹配后继续检查CSSStyleSheetList中的其他CSSStyleSheets。
如果您不关心浏览器支持,您可以使用Array.prototype.some来减少操作次数
[].some.call(document.styleSheets, function(sheet) {
return sheet.disabled = sheet.href.indexOf(test) !== -1;
});
编辑:
对于性能和传统支持的混合,以下解决方案将起作用:
var test = "http://www.formstack.com/forms/css/3/default.css";
for (var i = 0; i < document.styleSheets.length; i++) {
var sheet = document.styleSheets.item(i);
if (sheet.href.indexOf(test) !== -1) {
sheet.disabled = true;
break;
}
}