javascript - 在无法访问 HTML 的情况下禁用 "link"标记

标签 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 做什么

最佳答案

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

参见: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;
    }
}

关于javascript - 在无法访问 HTML 的情况下禁用 "link"标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16224424/

相关文章:

javascript - 在 Javascript 中对字符串值使用减法运算符时出现意外结果

javascript - 为什么 Document.prototype.getElementsByName 存在于 Chrome 中?

html - 导航菜单不起作用

html - CSS如何在悬停在链接上时更改SVG

javascript - 使用 nodejs 连接到远程 mongodb

javascript - 从图像名称中删除字符

javascript - 在单独的 UL 中搜索匹配的 LI 元素

html - 是否有理由使用 a 而不是 :link or a:visited in my stylesheet?

css - 制作 html 幻灯片的工具/框架(类似于/优于 keynote)?

javascript - 如何在 Javascript 中使用 URL 链接不同的幻灯片图像