【问题标题】:How to access dom elements of #document from embed tag?如何从嵌入标签访问#document的dom元素?
【发布时间】:2017-09-22 11:00:55
【问题描述】:

我有一个带有嵌入标签的标记想要访问 #document 内容。

在获取后尝试遍历直到嵌入标签无法访问内部节点但是有一个可用的函数 getElementByTagName()getElementByClassName() 但它没有帮助

var embedContent = document.getElementById('embed1')
var parentContents = x.parentElement.parentNode.lastElementChild.getElementsByTagName('embed')
> [function, embed1: function]

下面可以访问嵌入标签之后如何获取各个标签的值

是否有替代方法来实现这一点?如果是,请提供任何网址或示例。

【问题讨论】:

    标签: javascript jquery html dom embed


    【解决方案1】:

    <embed> 标记的内容本质上是锁定的 Shadow DOM - 这是一个全新的文档,Chrome 可以访问但你不能。

    很容易检查您可以访问哪些属性:

    var xObj = document.getElementById('xObj');
    
    for (var p in xObj) {
      var value = null;
      try {
        value = xObj[p];
      } catch (err) {}
    
      if (value)
        console.log(p, value);
    }
    <embed id="xObj" src="http://stackoverflow.com"> </embed>

    实际获取 HTML 的最佳选择是自己加载该内容:

    var response = await fetch(document.getElementById('embedTag').src);
    

    【讨论】:

    • 好的,有什么方法可以访问其他网站的标记,我尝试了 iframe,因为可能的来源相同,所以我也无法在此处嵌入标签。如果您知道任何其他可能的方式分享这里@Keith
    • @rselvaganesh 您发现的任何绕过同源策略的行为都将是一个安全漏洞,并且可能会很快得到修补。
    猜你喜欢
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2019-03-29
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多