2015-09-14 59 views
0
var gmaill = window.open("https://mail.google.com/mail/u/0/#sent", "_blank"); 
setTimeout(function() { 
alert(gmaill.document.getElementById(":113").innerHTML == "Test"); 
}, 3000); 

我正在使用setInterval查看网站,当条件满足时,我打开一个不同的选项卡以发送gmail和发送电子邮件。不幸的是,我无法通过Chrome的控制台访问不同网站上的不同标签(即,我通过twitter运行它,等待推文,为Gmail打开一个新标签,并通过电子邮件向某人发送推文链接)。它要么不返回任何东西,要么存在安全错误。有什么办法可以解决这个问题吗?我可以做一个扩展,并让它绕过吗?通过控制台访问多个站点的JavaScript

回答

1

你正在尝试的是所谓的跨站点脚本。您的调用者位于一个域中,而实际的脚本位于另一个域中。出于安全原因,大多数浏览器遵循相同的原产地策略。在其他窗口中访问脚本或DOM的含义都必须在同一个域上。

https://en.wikipedia.org/wiki/Same-origin_policy

https://en.wikipedia.org/wiki/Cross-site_scripting

我刚才试了一下。以编程方式,这是不可能的。不知道您是否可以在浏览器级别使用某种黑客攻击来实现

+0

但是,如果您可以控制需要跨域脚本编写的站点,那么您实际上可以实现它。检查下面的链接http://stackoverflow.com/questions/10636611/how-does-access-control-allow-origin-header-work。但不幸的是,在您的情况下,网站是您无法控制的Gmail和Twitter。所以你不能这样做 –