将数据传递到我使用 window.open() 创建的弹出窗口的最快方法?

IT技术 javascript
2021-01-14 09:41:31

我有使用 window.open() 函数打开弹出窗口的 javascript 代码。我想将数据从父窗口传递到那个弹出窗口,我似乎无法在 google 或 SO 上的任何地方找到优雅或简单的解决方案,但似乎应该支持内置于 JS 的这个。将数据传递到弹出窗口的最简单方法是什么?

在此先感谢您的帮助!

4个回答

由于安全限制,它超级容易只有当父窗口和弹出是来自同一个域。如果是这种情况,请使用以下命令:

// Store the return of the `open` command in a variable
var newWindow = window.open('http://www.mydomain.com');

// Access it using its variable
newWindow.my_special_setting = "Hello World";

在子(弹出)窗口中,您可以像这样访问该变量:

window.my_special_setting

在那之后你有什么特别想做的事情吗?

可能必须newWindow.window.myVariable = ...在父myVariable窗口子窗口中使用。
2021-03-31 09:41:31
我认为只是myWindow.myVariable = ...会运作良好?
2021-04-04 09:41:31

假设它是同一个域,按照 Bart 所说的去做。如果是不同的域,您可以使用哈希标签传递一些数据,例如http://www.example.com/page#some_data_for_the_page如果您有足够的数据来保证,您可以对键/值对进行 URL 编码。

鉴于这个答案已经有将近 8 年的历史了,这对 CORS 友好吗?Purley 出于好奇。
2021-03-25 09:41:31
@MarkCarpenterJr 不,完全不是 - 发送到该页面的所有数据都在 URL 或 cookie 中。话虽如此,某些用例可能不需要严格的 CSRF 检查——尤其是当数据只是被显示而没有被保存时。在这些情况下,这应该是安全的。
2021-04-12 09:41:31

您还可以在 open.window 函数中将该变量设置为 'name' 属性,然后在新窗口中使用 window.name 来检索该值。

theWindow.someVar = "bla";