2016-07-28 77 views
0

我打开一个新标签网站通过JavaScript在浏览器控制台写下面的代码:如何访问window.open打开的窗口的文档对象?

var win = window.open("http://staging.redefinewebs.in/wildgoose-const/wp-admin/post-new.php", "mywin", ''); 

现在我想在新打开的选项卡中添加一个字段中的文本。但为此,我需要访问win.document。当我在控制台写win.document我收到以下错误:如果我在打开新标签其他网站

Error: Permission denied to access property "document"

这个错误不会出现。所以,

如何访问在window.open的新选项卡中打开的窗口的文档对象?

+0

您不能写入远程站点上的文档,除非它专门写了允许您这样做,该页面没有,所以您不能。唯一的选择是用服务器端脚本代理页面。 –

回答

3

How to get access of document object of a window opened in a new tab with window.open?

如果窗口从不同来源打开一个文档,你不这样做;由于Same Origin Policy,跨浏览器访问被浏览器拒绝。从你的问题中的错误,这似乎是这种情况。

如果该窗口包含来自同一起源的文档,则可以按照您所示的方式访问它;但请注意,在您致电window.open后,它可能仍会立即加载,并且您可能需要等待它完成,或许使用DOMContentLoaded事件。

+0

我以某种方式成功地在我登录时使用gmail.com访问文档。 – user31782

+0

@ user31782:我怀疑是观察错误(例如,您可能正在使用gmail.com页面的控制台工作?)。 –

+0

不需要。如果只是在Firefox中打开一个新的空白标签,并用window.open打开gmail,我可以访问它的文档对象。可能我的新标签页是与Google服务器关联的? – user31782

2

如果违反同源策略,则无法访问子窗口的DOM。

只有满足以下三个条件,才能访问子窗口的DOM。

  • 两个窗口具有相同的协议(HTTP/HTTPS)
  • 两个窗口具有相同的主机(google.com和news.google.com是不同的)
  • 两个窗口具有相同的端口(google.com: 80和google.com:443是不同的)
相关问题