当前位置: 首页 > 面试题库 >

如何使用jQuery公开IFrame的DOM?

梁新觉
2023-03-14
问题内容

我有一个代表IFrame的原型。该原型具有一个名为GoToUrl(…)的函数,可在IFrame中打开给定的url。

我的问题是:如何创建“
InternalDOM”属性并使该属性引用内部IFrame的“窗口”对象(根DOM对象)?通过以下方式:如果我的IFrame公开了一个在其“窗口”对象中包含对象X的页面,我可以这样做:

MyFrameObject.GoToUrl(pageXurl);
MyFrameObject.InternalDOM.X

任何帮助,将不胜感激。

PS:我会接受不一定与jQuery相关的答案,但我更喜欢jQuery解决方案。


问题答案:

要获取window框架的对象,可以使用window.frames数组:

var iframewindow= frames['iframe_name'];

这就要求您赋予<iframe>old-schoolname属性而不是或id。另外,如果您知道iframe在页面上的顺序,则可以对其进行数字索引

var iframewindow= frames[0];

从DOM中的iframe元素获取iframe窗口通常更为灵活,但这需要一些兼容性代码来应对IE:

var iframe= document.getElementById('iframe_id');
var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;

jQuery定义了content()方法来获取document节点,但是它没有给您跨浏览器的方法,从documentwindow,所以您仍然会遇到以下问题:

var iframe= $('#iframe_id')[0];
var iframewindow= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;

这并不是真正的大胜利。

(注意:使用jQuery进行跨框架脚本编写时要非常小心。每个框架都需要自己的jQuery副本,并且一帧副本中的方法不一定适用于另一框架中的节点。跨框架脚本编写是一个充满话题的话题陷阱。)



 类似资料:
  • 问题内容: 我有一个iframe,为了访问父元素,我实现了以下代码: 如何使用jQuery获得相同的结果? 更新 :或如何使用jquery访问iFrame父页面? 问题答案: 要在iFrame的父项中查找,请使用: $()包装器的第二个参数是要在其中搜索的上下文。默认为文档。

  • 我正在尝试将bootstrap-daterangepicker与WebPack一起使用。在我的视图文件中,我有以下内容: 在中:

  • 问题内容: 使用Play Framework,我通过GSON序列化了模型。我指定哪些字段是公开的,哪些不是。 这很好用,但我也想使用@expose方法。当然,这太简单了。 我该怎么做 ? 谢谢你的帮助 ! 问题答案: 我遇到的最好的解决方案是制作一个专用的序列化器: 并在我看来像这样使用它: 但是为某个方法工作会很棒:它将避免使序列化器仅用于显示方法!

  • 我创建了一个docker镜像(java Web应用程序),创建了一个包含1个主节点和1个工作节点的kubernetes集群,创建了一个部署和一个服务。所有的资源似乎都运行良好,因为我已经通过“kubectl描述资源资源名”进行了检查。最后,我使用了入口来公开集群之外的服务。入口资源似乎工作正常,因为在描述入口对象时没有错误。但是,在从另一台机器访问浏览器上的主机时,我得到了“您的连接不是私有的”错

  • 问题内容: 我有一个包含IFrame和一个Button的网页,一旦按下按钮,我需要刷新IFrame。如果可能的话,这可能吗?我搜索了,找不到任何答案。 问题答案:

  • 问题内容: 所以我有3个端口应该暴露在机器的接口中。使用Docker容器可以做到这一点吗? 问题答案: 要只暴露一个端口,这是您需要做的: 要公开多个端口,只需提供多个参数: