禁用“链接”标记,但无法访问HTML

时间:2013-04-25 20:48:26

标签: javascript html css getelementsbytagname

所以我有一个我正在研究的网站,其中一部分我们有一个嵌入式简报注册。问题是嵌入式代码使用了所有自己的样式表,这些样式表会干扰站点的设计。嵌入是通过javascript完成的,所以我不能禁用它们,直到页面的这一部分加载。

基本上我需要script才能停用整个<link>。最重要的是,links没有任何classesids因此很难定位。

<link rel=​"stylesheet" type=​"text/​css" href=​"http:​/​/​www.formstack.com/​forms/​css/​3/​default.css?20130404">​

这是我需要禁用的链接之一。我试着寻找像getElementByType或类似的东西,但我找不到任何东西。

任何帮助将不胜感激。只要代码禁用了对我来说足够好的链接。也许有一种方法可以在文档中搜索<link>字符串并用注释包围它吗?

谢谢你们

PS,我是一个javascript新手,不知道我在用js做什么

1 个答案:

答案 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;
});

请参阅:Array some method on MDN

编辑:
对于性能和传统支持的混合,以下解决方案将起作用:

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;
    }
}