【问题标题】:get attribute value of parent element from iframe content从 iframe 内容中获取父元素的属性值
【发布时间】:2013-03-12 10:32:35
【问题描述】:

如果我在iframecontent 中运行脚本,有没有办法获取属性data-media 的值?

代码如下:

<div id="myDiv">
    <iframe data-create-resource-url="http://my.domain.url" 
       data-media="Song" 
       frameborder="0" 
       height="41" 
       src="https://different.domain.url" width="366">
     </iframe>
</div>

我已经尝试了很多方法,例如 window.parent.documenttop.documentwindow.parent 以及其他可用的解决方案,但似乎不起作用。

【问题讨论】:

    标签: jquery html ruby-on-rails iframe


    【解决方案1】:

    好吧,您实际上并不需要访问父级。当您在 iframe 中运行脚本时。 iframe 当前是 iframe 中脚本的窗口。所以访问窗口元素应该给你所说的attr。试试这个(未测试):

    alert($(window).attr('data-media'));
    

    【讨论】:

    • 感谢您的回复!不幸的是,输出未定义。
    • 我现在测试了它,它应该可以工作。最后查看小提琴链接。正如您在源代码中看到的,在 jsfiddle 上,您的代码在具有以下属性 &lt;iframe name="result" frameborder="0" src="www.exampledomain.com"&gt;&lt;/iframe&gt; 的 iframe 中运行。所以我的代码alert($(window).attr('name')); 应该提醒result jsfiddle.net/DDcvN
    • 非常感谢您的帮助!
    • @Jehanzeb.Malik 这似乎只在获取名称属性时才有效。当我尝试使用数据属性时,我只是得到未定义。您是否成功地将其与数据属性一起使用,如您的原始答案所示?如果不是,也许应该编辑它...
    【解决方案2】:

    你试过了吗:

    window.frameElement.getAttribute("data-media");
    

    【讨论】:

    • 感谢您的回复。会试试这个。
    • 虽然有一个错误:无法调用 null 的方法“getAttribute”。我也使用了 .attr() 并得到了同样的错误。
    • $(window.frameElement).data('media');为我工作。
    • 当 iframe 和网页的域不同时,这不起作用。
    【解决方案3】:

    首先,将 ID 或 CLASS 添加到您的 iframe 元素(例如 id='myframe'
    然后,您可以使用 jquery 访问任何属性:

    var parent=window.parent.document.getElementById('#myframe');
    

    现在只需获取您的属性(未测试):

    myAttr=$(parent).data("my-data-attribute") or
    myAttr=$(parent).attr("myelement")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      相关资源
      最近更新 更多