问题标签 [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.

0 投票
1 回答
564 浏览

iframe - mraid.expand() 在 DoubleClick Studio 中无法正常工作

我正在尝试将 mraid 项目上传到 Google 的 DoubleClick 工作室并注意到 mraid.expand() 事件无法正常工作。该广告旨在成为应用内可展开横幅,基本上在第一次之后,mraid.expand() 实际上不会扩展到全屏,而是扩展到横幅本身。现在的解决方案是这样的:

我注意到,因为 DoubleClick 将所有内容嵌入到 层中,关闭按钮实际上位于包含我们上传的代码的父级中,因此需要一个 window.parent.mraid.expand() 才能正确触发 expand()。这看起来真的很hacky,我想知道是否有人以前见过这个问题或有更好的解决方案。

0 投票
1 回答
641 浏览

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

提前感谢您的任何反馈。

0 投票
3 回答
1874 浏览

dom - 为什么 window.parent 会自引用?

我从文档和几个相关的 StackOverflow 帖子中了解到,如果没有其他父级,window.parent 将自我引用,因此永远不会被定义。

我似乎找不到一个正当的理由来解释为什么会这样。JavaScript 确实有它的特性,但这个特性看起来很奇怪。

MSDN简单地指出

如果当前窗口没有父窗口,即占据了整个浏览器窗口,则 Parent 返回当前窗口的 Window 对象。

MDN状态

如果窗口没有父窗口,则其父属性是对自身的引用。

以及W3 标准本身

Window 对象的 parent 属性的值必须是父文档的 Window 对象,如果没有父文档,则该文档的 Window 对象

我还没有看到其他语言有这样的行为,这种自引用设计的原因是什么?当您点击窗口中最顶部的元素时,'null' 或 'undefined' 会不会造成更明显的情况?

所以为什么?

0 投票
0 回答
481 浏览

javascript - 在 2 个应用程序之间将变量从子窗口传递到父窗口

我使用一个showModal对话框打开了一个子窗口,其中 URL 指向与主窗口不同的网站。

我想使用下面的脚本将一些变量从子窗口传递到父窗口。

父窗口中使用的脚本:

父窗口的 URL 如下所示:https ://example.com/MainApp/MainForm.aspx

子窗口中使用的脚本:

在主窗口中,Return返回null

当我试图获取 的引用时,还存在一个问题,它在子窗口中window.parent给出了一个值。null

注意:这里 ChildApp 和 MainApp 是两个不同的应用程序。

0 投票
1 回答
3865 浏览

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) 确实记录了正确的对象,并且被定义了。

0 投票
2 回答
3874 浏览

javascript - 需要更改嵌套 Windows 的父 URL

我目前有一个表单正在 iFramed 到充当搜索栏的应用程序中。当用户在此搜索中按 Enter 键时,表单会将父窗口重定向到应用程序中的不同 URL。请注意,它们具有相同的域,但具有不同的子域。这部分效果很好。请参阅下面的代码。

问题是我有一个客户正在将该应用程序 iFraming 到另一个应用程序中。当他们在这种情况下执行此搜索时,我们收到一条错误消息,指出“尝试导航的框架既不是与目标同源,也不是目标的父级或开启者”。

是否有解决方法可以使其正常工作?

0 投票
1 回答
570 浏览

asynchronous - 如何在单信号 api 中等待异步调用完成

我正在使用 One-signal API 进行通知。我想从那里的 API 获取用户 ID,下面是我的代码。

我得到的答案如下

因为我调用一个信号的方法是异步的,所以我的 window.parent.postMessage() 方法在得到响应之前被执行。请告诉我如何处理?表示如何等到我的 OneSignal.push() 完全接听电话

0 投票
0 回答
1470 浏览

javascript - 使用 window.open 在 Safari 中从子窗口到父窗口的 postMessage

window.open(...)用来打开一个全新的窗口(相同的域、相同的子域、相同的目录、相同的所有内容,但不同的 .html 文件)。在子窗口中,我使用它来将消息发送回父窗口:

它在 Chrome 和 Firefox 中运行良好……但在 Safari 中却不行。以下是我尝试过的一些无效的替代方案:

如何获得对父窗口的引用,以便可以发回 postMessage(...) 消息?

0 投票
1 回答
41 浏览

javascript - 为在 localhost 上托管的 iframe 中加载的页面覆盖“跨域对象上的权限被拒绝 [...]”

我正在用 HTML 和 JS 编写一组控件,用于扩展我使用但不控制的网站的功能。我已将站点加载到 中,iframe以通过托管在localhost. 正在加载的页面有自己的脚本,其中包括一种机制,该机制爬上window树直到它位于顶部窗口并尝试在该上下文中运行其后续代码,从而产生类似于“ Permission denied [...] on跨域对象”。

我不清楚我可以在 Firefox、Chrome中做什么(如果有的话)来解决这个问题。我将如何欺骗我正在加载的内容,iframe使其相信它的整个世界只存在于框架中,以便window.parent从框架的上下文中返回自身?

0 投票
0 回答
68 浏览

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。

任何帮助表示赞赏!

谢谢

汉克