是否可以使用jquery从dom中删除html注释
只是想知道是否有办法使用jquery删除html注释。
<!-- Some text -->
谢谢
试试这个:
$('*').contents().each(function() { if(this.nodeType === Node.COMMENT_NODE) { $(this).remove(); } });
编辑:这将从DOM中删除元素。 浏览器通常存储可通过菜单项访问的原始页面源的副本。 这不会更新。
如果要隐藏注释,可以使用javascript将整个HTML标记(带注释)插入到DOM中。 当然,可以查看javascript,但它是从人们看到的第一个地方移开的一步。
从来没听说过。 但我不明白它的用途是什么。 只有在您查看pagesource时才会看到注释,并且大多数(如果不是全部)具有视图源选项的浏览器默认会在加载javascript之前为您提供源代码。
这可能是一种轻微的hacky方式,但它对我来说绝对是一种享受。
它使用了split()函数。
首先
codeWithComments = $("*yourelementhere*").html(); var withoutComments = codeWithComments.split('-->'); $("*yourelementhere*").html(withoutComments[withoutComments.length-1]);
这将直接在最后一个’ – >之后用代码替换给定元素的HTML。这当然假定您在给定元素中只有一组注释。 您可以在评论的最后一行拆分以获得完全匹配。
为我工作,可能不适用于所有情况。
当脚本尝试访问IFrame内容时,我遇到了错误。 这是一个正在跳过IFrame的修改版本:
$('*') .filter((idx, el) => !(el instanceof HTMLIFrameElement)) .contents() .each(() => { try { if(this.nodeType === Node.COMMENT_NODE) { $(this).remove(); } } catch (e) { console.error(e); } });
我几乎肯定评论实际上并不是DOM的一部分。 它们是原始HTML代码的一部分,但是当浏览器将其转换为DOM时,它们会被剥离,因为它们没有用于呈现的目的。