【问题标题】:Is there a way of reading HTML tags on the page that are not part of the DOM using javascript?有没有一种方法可以使用 javascript 读取页面上不属于 DOM 的 HTML 标签?
【发布时间】:2017-03-31 17:27:03
【问题描述】:

我有一个 Chrome 扩展程序,它从当前选项卡读取元标记,以便向用户显示有关当前页面的信息。

我注意到目前在 YouTube 上,包含有关当前视频的信息的元标记无法通过 DOM 访问(打开开发控制台并查看 document.head,不存在有关当前视频的元标记) ,但如果您查看页面源代码,它们就在页面上。我猜他们正在使用 document.write 添加它们,因为他们不希望它们成为 DOM 的一部分。

还有其他方法可以使用 javascript 访问这些标签吗?

【问题讨论】:

    标签: javascript html dom


    【解决方案1】:
    document.querySelectorAll("meta")
    

    将返回所有元标记。

    元标记不必在<head> 标记内。这只是一个约定而不是要求。这也是谷歌不遵循的约定。见他们的html style guide

    【讨论】:

    • 这不起作用,因为正如我在问题中所述,元标记 not 已添加到 DOM。我提到使用 document.head 仅仅是因为通过查看 youtube 视频上的页面源,您可以在 head 部分看到元标记,以任何方式查询 DOM 都不会显示这些标记。
    【解决方案2】:

    如果您想要完整的元列表,在它被 javascript 操作之前 - 在 youtube 视频的控制台中试试这个

    fetch('').then(r=>r.text()).then(html=> {
        let p = new DOMParser(), 
            d = p.parseFromString(html, 'text/html');
        console.log(d.querySelectorAll('meta')); 
    });
    

    我在一个示例视频中看到 71 个元标记

    我相信这可以在网络扩展中轻松完成

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      相关资源
      最近更新 更多