所以我有一个我正在开发的网站,其中一部分我们有一个嵌入式时事通讯注册。问题是嵌入式代码使用了它自己的所有样式表,这会干扰网站的设计。嵌入是通过 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 做什么
最佳答案
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 中的其他 CSSStyleSheet。
如果您不关心浏览器支持,您可以使用 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;
}
}
关于javascript - 在无法访问 HTML 的情况下禁用 "link"标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224424/