禁用“链接”;标记,而不访问HTML

Disable a "link" tag without access to HTML

本文关键字:访问 HTML 标记 链接 禁用      更新时间:2023-09-26

所以我有一个网站,我正在工作,在一个部分,我们有一个嵌入式时事通讯注册。问题是嵌入的代码使用了自己的样式表,这干扰了站点的设计。嵌入是通过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中的其他css样式表后,它已经找到了它的匹配。

如果你可以不关心浏览器支持,你可以使用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;
    }
}