当前位置: 首页 > 知识库问答 >
问题:

vue.js - iframe嵌套问题,通讯失效?

谭新知
2024-02-25

一个网页使用iframe引入一个地址,两者之间有postmessage通讯,再把这个网页使用iframe引入到另一个网页。第一个引入的地址之间的相互通讯就没有生效。

这种这么解决呢,不再次嵌套iframe是生效的

共有1个答案

潘辰龙
2024-02-25

这个问题涉及到跨域通信和iframe嵌套的问题。当一个网页使用iframe引入另一个地址,并且两者之间有postMessage进行通信时,如果在嵌套的iframe内部再次嵌套另一个iframe,那么外部的iframe和内部的iframe之间的通信可能会失效。

要解决这个问题,有几种可能的解决方案:

  1. 避免嵌套iframe:最简单的解决方案是不使用嵌套的iframe。如果你可以控制所有的页面和代码,确保不要在iframe内部再次嵌套另一个iframe。
  2. 使用其他跨域通信方式:如果必须使用嵌套的iframe,并且需要通信,可以考虑使用其他跨域通信方式,例如window.name、window.postMessage、WebSocket等。这些方法可以在不同iframe之间进行通信,不受嵌套限制的影响。
  3. 设置iframe的src属性:在某些情况下,将iframe的src属性设置为空或特定值可能有助于解决问题。这可以触发浏览器重新加载iframe,并重新建立通信通道。
  4. 使用第三方库或框架:有一些第三方库或框架可以帮助处理跨域通信和iframe嵌套的问题。例如,jQuery提供了一个名为jQuery.proxyWindow()的方法,可以用于处理跨域通信和窗口代理。

请注意,具体的解决方案取决于你的代码和需求。如果你可以提供更多关于你的代码和环境的详细信息,我可以提供更具体的帮助和建议。

 类似资料:
  • 我有以下HTML代码的网页: 我试过这个。WebDriverWait(驱动程序,10).Unilt(ec.frame_to_available_and_switch_to_it((by.css_selector,“iframe.iframetgr”)))WebDriverWait(驱动程序,10).Unilt(ec.frame_to_available_and_switch_to_it((by.n

  • 我试图使用jQuery访问div id=“element”。 所有IFRAME都在同一个域上,没有www/非www问题。 我成功地选择了第一个iframe中的元素,但没有选择第二个嵌套iframe中的元素。 我尝试了一些事情,这是最近的(也是一个相当绝望的尝试)。 编辑:为了排除时间问题,我使用了click事件并等待了一段时间。 有什么想法吗?多谢了。 更新:我可以像这样选择第二个iframe..

  • 问题内容: 这可能太局限了,但我希望有人可以帮助我正确阐明我的问题。 因此,我们有一个前端Web服务器,该服务器使用CORBA与后端应用程序服务器进行通信。我曾被要求将后端应用程序移植到LINUX盒中。但是,为了测试它,我试图将前端Web服务器指向LINUX后端。 我们正在使用omniORB-4.1.4,这是获取后端系统实例的方法: 当前端和后端都在SUN / Solaris机器上运行时,似乎可以

  • A,B两个系统,用的token是一样的,但是两个前端不在同一服务器上,怎样让B页面能获取到A页面的Cookie,即A系统登录后,通过iframe访问B系统不需要再次登录,实现一个单点登录的效果,由于某些原因,不可以在iframe的src中携带token信息。 目前的想法是想让B系统能获取A系统存在Cookie中的token信息,但是存在跨域问题,不能获取到,有办法实现吗?尝试了利用nginx配置转

  • vue 嵌套 iframe 打开失败 提示 检测到疑似window复写或者嵌套iframe 点击超链接icon,可以打开对应文件 我是 vue项目(A项目)通过 iframe 嵌套另一个vue 项目(B项目)的页面,然后在B项目在通过iframe 嵌套A项目的页面,这样就打不开嵌套的A项目的页面了,(个人感觉是多次嵌套的问题)。B项目单独运行的话是可以打开页面的

  • 我有一个垂直的viewpager在一个水平的viewpager。在horzontal viewpager I的第二个片段中,添加了垂直viewpager。垂直viewpager包含有图像的片段,所以当片段对用户可见时,我必须开始动画图像,因为使用了setUserVisibleHint。但是当移动到水平viewpager的第二个片段时,不会调用垂直viewpager内部片段的setUserVisib