Javascript gmail如何将数据导入页面

Javascript gmail如何将数据导入页面,javascript,web,gmail,google-chrome-devtools,Javascript,Web,Gmail,Google Chrome Devtools,我目前正在为gmail开发一个chrome扩展。我想在用户打开一封电子邮件并从中获取grub发件人的电子邮件地址时触发一些操作。所以我想到的想法是通过prototype拦截XMLHttpRequest.send,如果这个请求包含电子邮件数据,那么就从那里触发我的事件。但gmail不会发送任何休息请求,也不会让电子邮件的主体使用。我真的很想知道谷歌是如何将电子邮件正文和其他数据发送到页面的。我的意思是,新数据出现在页面中的唯一方式是通过rest: 提交表格 XMLHttpRequest 网袋

我目前正在为gmail开发一个chrome扩展。我想在用户打开一封电子邮件并从中获取grub发件人的电子邮件地址时触发一些操作。所以我想到的想法是通过prototype拦截
XMLHttpRequest.send
,如果这个请求包含电子邮件数据,那么就从那里触发我的事件。但gmail不会发送任何休息请求,也不会让电子邮件的主体使用。我真的很想知道谷歌是如何将电子邮件正文和其他数据发送到页面的。我的意思是,新数据出现在页面中的唯一方式是通过
rest

  • 提交表格
  • XMLHttpRequest
  • 网袋
所有这些都可以通过
开发工具
进行检查。因此,我创建了一个代码片段,将一个
domsubtreemedited
侦听器添加到
文档的
顶部
。在监听器内部,我用xpath查询我打开的电子邮件数据的主体

例如,我想了解gmail是如何为电子邮件
A
获取数据的。我知道这封电子邮件包含一些特定的文本,如
随机文本r2d2
。所以我只需在我的侦听器中检查文档是否包含现在具有innerText
随机文本r2d2
的节点。之后,我只需检查
网络
选项卡,查看在单击“打开电子邮件”按钮和在页面中显示新文本之间发送的请求

函数findEleWithText(text){
让parent=document.body;
让结果=[];
让query=document.evaluate(“/*[包含(text(),“+text+”)]”),
父| |文档,
null,XPathResult.ORDERED\u节点\u快照\u类型,null);
for(设i=0,length=query.snapshotLength;i{
var e2=findEleWithText(“下午2:09”,document.body)
如果(e2.length>0){
console.log('e');
}
})
但问题是,电子邮件的数据出现在页面中,但
网络
选项卡显示没有请求。数据怎么可能进入页面?我的意思是,即使请求是从iframe发出的,它也会显示在
网络
中。我还检查了谷歌是否打开了websocket(ws-data不会显示给
网络
)-但它不会


有什么想法吗?有没有办法不使用REST获取数据?

结果是,gmail在显示电子邮件列表时会预取电子邮件。打开电子邮件时,gmail只会显示它已经获取的变量中的数据