问题标签 [cross-window-scripting]
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.
javascript - 使用 JavaScript 向所有打开的窗口/选项卡发送消息
我听说 HTML5 有window.postMessage()
,但似乎需要在您将消息发布到的窗口(或选项卡,在整个问题中)上有一个句柄。如果我想广播到所有打开的窗口怎么办?这可能吗?
(我想要做的是当用户在一个窗口中执行影响其他窗口的操作时警告其他窗口没有任何服务器往返,以便他们可以更新他们的内容。但是,虽然可以从现有窗口打开一些窗口-- 允许我截取和存储对它们的引用 -- 用户可以手动打开一些新窗口,然后选择书签或输入 URL。在这种情况下,似乎没有办法截取和存储引用.)
javascript - 如果两个窗口都来自同一个域,为什么javascript代码无法访问打开它的窗口(window.opener)中的变量?
我正在尝试使用 Facebook Connect Javascript API。我在 subdomain.example.com/foo/bar/baz/article.html 上有一个 Facebook 登录按钮。单击该按钮将打开 Facebook 域上的登录页面。登录后,该子窗口会转到 subdomain.example.com/foo/xd_receiver.html,这是 Facebook 提供的一个文件,它只有一个脚本标签,用于从他们的域加载脚本,该脚本试图访问原始窗口和从中调用一个函数。
由于子窗口和父窗口都在同一个域中,我认为子窗口将能够访问父窗口对象的属性(而不仅仅是位置)。由于某种原因它不能。想法?
文档说 xd_receiver 文件需要位于相对路径(我认为没有'..')可以从登录按钮所在的任何页面访问它的位置,但说绝对路径可以在 Firefox 中工作,这就是我正在使用的。xd_receiver 文件正在加载,所以我认为这不是问题所在。任何人都知道为什么会存在这样的限制吗?文档喜欢说“这样做”而不解释原因。娱乐时间。
javascript - Javascript跨窗口交互
单击链接时,我有这个非常简单的 Javascript 可以在文本区域上编写:
现在我想提高赌注。
我想要做的是将表单放在另一个窗口中,当我单击链接时,我会在另一个窗口中写入文本区域。
我不一定要代码,因为我意识到这可能非常复杂。
问题是从哪里开始,因为我不知道!(当我使用 Javascript 进行谷歌跨窗口或跨域交互时,我并没有真正得到任何有用的东西)。
因此,我能得到的任何帮助、库、插件或任何可以引导我朝着正确方向前进的东西都非常感激。
jquery - jQuery 在子窗口中不起作用?
当我写:
我得到警报。
但如果我这样做——
然后它不起作用。它什么也不做。我整晚都在想办法解决这个问题。有任何想法吗?
javascript - jQuery - 跨窗口通信(弹出选择文件,无服务器端)
我有一个使用 jQuery 的离线网页。我希望它读取用户选择的文件(或多个文件)。我希望将文件选择器显示在另一个浏览器窗口中,这会将数据发送回原始窗口。
所以:
- 在原始窗口中有一个“选择文件”按钮。
- 新窗口打开,允许用户在表单中选择文件。用户单击“确定”,窗口关闭,并以某种方式将有关所选文件的数据发送到原始窗口。
- 处理已接收的数据(并触发事件)。
我设法找到的是: http ://www.sfpeter.com/2008/03/communication-between-browser-windows-with-jquery-my-new-plugin/
然而,这似乎相当陈旧 - 你知道任何更新更好的解决方案吗?
javascript - Chrome 跨窗口通信
我有一个 HTML5 框架,并且已经开发和集成了调试器/配置文件/控制台等。在全屏模式下,我看不到调试器(显然是因为画布是全屏的)。所以,我需要做另一个选项卡或弹出窗口,以便可以将调试器移到另一个监视器或其他任何东西上。但是,调试器需要能够访问(监视)打开它的窗口或选项卡。
我唯一的其他选择是在加载框架的调试版本时不允许全屏显示,但这不是我想要的各种搜索路径。所以基本上我的问题是,我可以让一个窗口(webapp)打开一个弹出窗口(调试器)并让那个弹出窗口访问打开的窗口(webapp)吗?
javascript - 您如何在同一域的窗口中共享事件?
假设我的页面上有一个 iframe,并且我有一个可以从父级或框架内触发的事件,但我需要两个页面上的侦听器在任一页面被触发时执行。实现这一目标的最佳方法是什么?
两个页面都在同一个域上,所以我认为我不需要担心同源安全策略问题。
我正在使用 jQuery,但如果需要,我很乐意使用裸 javascript。
到目前为止,我已经尝试过,提炼成一个简单的例子:
在父母身上:
HTML:
JS:
在孩子身上:
HTML:
JS:
我希望单击任一按钮也会在另一个窗口中触发“custom_event”。即在父级中能够通过$iframe.contentWindow.document 触发框架中的事件,同样在框架中能够通过window.parent.document 触发事件,但可惜没有!没有错误、警告或任何其他线索。
我做错了什么,遗漏了一些明显的东西,还是这不可能?
谢谢你的帮助。
javascript - localStorage跨窗口事件ios7不触发
我需要在同一个域上的两个窗口之间进行数据通信,这个问题可能与此有一些相似之处,但我对 ios 有一个特定的问题。
正如前面提到的问题的答案之一中所建议的那样,我已经开始尝试这种 localStorage 事件消息解决方法。
此小提琴中演示的此代码在输入字段中显示其他选项卡/窗口具有的值作为值。这在我的 mac 上的 chrome、safari 和 firefox 以及我的 Android 上的 chrome 和默认浏览器中完美运行。(尝试用小提琴打开两个选项卡,然后在输入字段中输入一些内容,然后切换选项卡并查看“#textout”的内容已更改。)
但是,这在 ios7 中不起作用(对不起,我无法在任何旧版本上进行测试),chrome 和 safari 都没有发生任何事情。如果我有一个苹果设备,我会调试这个,但不幸的是我测试过的设备不是我的,所以我需要一些帮助。
有谁知道为什么会发生/不发生这种情况?
javascript - window.postMessage - 使其工作的困难
我尝试从 PayPal Ipn.php 脚本建立通信(当收到“已完成”消息时 - 该部分经过测试并且运行良好),以及包含提交按钮的表单原始页面。这个想法是点击提交按钮。
这两个页面使用相同的协议在同一个域上。
这是我在 Ipn.php 脚本上的脚本:
经过进一步测试,接收部分可以正常工作,但发送部分(上图)不能正常工作。
这是我在原始表单上的脚本,其中包含提交按钮:
到目前为止的结果:不起作用,发送部分不起作用(经过测试接收部分)。
在此先感谢您的帮助。
javascript - 使用闭包捕获原始窗口
我一直在阅读某些版本的 IE 在 window.opener 方面存在问题。相反,我在 newWindow.onbeforeunload 方法中关闭了旧窗口,如下所示:
警报不是我实际要使用的。(我将使用它来确定何时在另一页上提交了数据,这样我就不必不断地轮询。)
但我的问题是(1)这是明确定义的行为吗?(2) 是否有任何版本的 IE (6+) 会遇到问题?
我将尝试在 IE 上运行它并为自己测试,但我还没有那种能力。它确实适用于 Firefox (v31)。