问题标签 [window.parent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iframe - mraid.expand() 在 DoubleClick Studio 中无法正常工作
我正在尝试将 mraid 项目上传到 Google 的 DoubleClick 工作室并注意到 mraid.expand() 事件无法正常工作。该广告旨在成为应用内可展开横幅,基本上在第一次之后,mraid.expand() 实际上不会扩展到全屏,而是扩展到横幅本身。现在的解决方案是这样的:
我注意到,因为 DoubleClick 将所有内容嵌入到 层中,关闭按钮实际上位于包含我们上传的代码的父级中,因此需要一个 window.parent.mraid.expand() 才能正确触发 expand()。这看起来真的很hacky,我想知道是否有人以前见过这个问题或有更好的解决方案。
javascript - IE8+, window.open(url/#/frag,'_parent') 与 iframe 中的 parent.location.href=url/#/frag
我有一个加载 iframe 的网站。父窗口中的代码注册了一个onbeforeunload监听器。
目前,iframe 包含一个带有触发点击处理程序的按钮:
window.open(/#/frag,'_parent')
在我测试过的所有浏览器中(除了IE8/IE9),这具有加载父片段而不触发onbeforeunload事件的所需行为。但是,如果我将 iframe 的点击处理程序更改为触发:
parent.location.href='/#/frag'
它在 IE 8/9 中也可以正常工作。
谁能解释这种行为?
我在下面包含了一个简单的示例:
索引.html
iframe.html
提前感谢您的任何反馈。
dom - 为什么 window.parent 会自引用?
我从文档和几个相关的 StackOverflow 帖子中了解到,如果没有其他父级,window.parent 将自我引用,因此永远不会被定义。
我似乎找不到一个正当的理由来解释为什么会这样。JavaScript 确实有它的特性,但这个特性看起来很奇怪。
MSDN简单地指出
如果当前窗口没有父窗口,即占据了整个浏览器窗口,则 Parent 返回当前窗口的 Window 对象。
MDN状态
如果窗口没有父窗口,则其父属性是对自身的引用。
以及W3 标准本身
Window 对象的 parent 属性的值必须是父文档的 Window 对象,如果没有父文档,则该文档的 Window 对象
我还没有看到其他语言有这样的行为,这种自引用设计的原因是什么?当您点击窗口中最顶部的元素时,'null' 或 'undefined' 会不会造成更明显的情况?
所以为什么?
javascript - 在 2 个应用程序之间将变量从子窗口传递到父窗口
我使用一个showModal
对话框打开了一个子窗口,其中 URL 指向与主窗口不同的网站。
我想使用下面的脚本将一些变量从子窗口传递到父窗口。
父窗口中使用的脚本:
父窗口的 URL 如下所示:https ://example.com/MainApp/MainForm.aspx
子窗口中使用的脚本:
在主窗口中,Return
返回null
。
当我试图获取 的引用时,还存在一个问题,它在子窗口中window.parent
给出了一个值。null
注意:这里 ChildApp 和 MainApp 是两个不同的应用程序。
javascript - 尝试将对象从一页传递到另一页时,window.opener 为空
与此类似的问题很少,但在我的情况下没有一个解决方案有效。我对此很陌生,所以问题也可能是我缺少的基本问题。
在点击的情况下,我试图用点击的对象打开一个新标签,所以现在我只是想在新标签中提醒它。
父窗口代码:
这是打开的窗口:
前 2 个日志返回“未定义”,第三个是抛出 myData 未定义的异常(未捕获的 ReferenceError:myData 未定义)。对于后一个日志,我得到“Uncaught SecurityError: Blocked a frame with origin "null" from access a frame with origin "null"。协议、域和端口必须匹配。”
帮助将不胜感激,谢谢!
编辑:console.log(toSend) 确实记录了正确的对象,并且被定义了。
javascript - 需要更改嵌套 Windows 的父 URL
我目前有一个表单正在 iFramed 到充当搜索栏的应用程序中。当用户在此搜索中按 Enter 键时,表单会将父窗口重定向到应用程序中的不同 URL。请注意,它们具有相同的域,但具有不同的子域。这部分效果很好。请参阅下面的代码。
问题是我有一个客户正在将该应用程序 iFraming 到另一个应用程序中。当他们在这种情况下执行此搜索时,我们收到一条错误消息,指出“尝试导航的框架既不是与目标同源,也不是目标的父级或开启者”。
是否有解决方法可以使其正常工作?
asynchronous - 如何在单信号 api 中等待异步调用完成
我正在使用 One-signal API 进行通知。我想从那里的 API 获取用户 ID,下面是我的代码。
我得到的答案如下
因为我调用一个信号的方法是异步的,所以我的 window.parent.postMessage() 方法在得到响应之前被执行。请告诉我如何处理?表示如何等到我的 OneSignal.push() 完全接听电话
javascript - 使用 window.open 在 Safari 中从子窗口到父窗口的 postMessage
我window.open(...)
用来打开一个全新的窗口(相同的域、相同的子域、相同的目录、相同的所有内容,但不同的 .html 文件)。在子窗口中,我使用它来将消息发送回父窗口:
它在 Chrome 和 Firefox 中运行良好……但在 Safari 中却不行。以下是我尝试过的一些无效的替代方案:
如何获得对父窗口的引用,以便可以发回 postMessage(...) 消息?
javascript - 为在 localhost 上托管的 iframe 中加载的页面覆盖“跨域对象上的权限被拒绝 [...]”
我正在用 HTML 和 JS 编写一组控件,用于扩展我使用但不控制的网站的功能。我已将站点加载到 中,iframe
以通过托管在localhost
. 正在加载的页面有自己的脚本,其中包括一种机制,该机制爬上window
树直到它位于顶部窗口并尝试在该上下文中运行其后续代码,从而产生类似于“ Permission denied [...] on跨域对象”。
我不清楚我可以在 Firefox、Chrome等中做什么(如果有的话)来解决这个问题。我将如何欺骗我正在加载的内容,iframe
使其相信它的整个世界只存在于框架中,以便window.parent
从框架的上下文中返回自身?
javascript - window.parent 和 window.top 突然等于 window.self
我有一个使用 iframe 托管在另一个应用程序 (A) 中的网络应用程序 (B)。我的 Web 应用程序可以毫无问题地向父级 B 发布消息 (parent.postMessage(“my message”, “*”))。
我的应用程序有一个指向外部 Web 应用程序 (C) 的链接。该链接包含一个redirectUrl,应用程序C 将在完成后调用(POST)。该 url 指向我的应用程序中的一个操作。该操作最终确保当前位置与用户单击链接之前的位置相同:
现在,一旦用户从应用程序 C 返回到我的应用程序,就无法再从我的应用程序父应用程序 A 发布消息。在调试客户端时,我可以看到原因:window.self、window.parent 和window.top 都是相同的并且等于我的应用程序的窗口/文档。
请注意,这只发生在 iPhone / webkit 上。对于 android 设备和桌面浏览器,它可以正常工作,即 parent 和 top windows 属性按预期指向 A。
任何帮助表示赞赏!
谢谢
汉克