Firefox什么时候创建一个新的内部窗口?
When does Firefox create a new inner window
对于Firefox扩展,我拦截http请求和http响应,我得到LoadContext
并找出内部窗口ID &外部窗口ID。
我截获的http请求是一个URL替换当前视图,即http响应将替换当前选项卡中的当前网页,即它将导致一个新的内部窗口。
当我拦截请求和响应时,我仍然不知道它的新的内部窗口id,它只能通过"content-document-global-created"事件知道。
事件顺序为
http-on-modify-request innerID(current):outerID
http-on-examine-merged-response innerID(current):outerID
content-document-global-created (innerID is new):outerID
如果当前页面不会被新的http响应(例如图像或Javascript)所取代,那么LoadContext.associatedWindow
给出的当前窗口是好的。
但是如果页面将被新的http响应(例如新的html页面)所取代,我希望LoadContext.associatedWindow
是一个新窗口。虽然在真正接收到响应之前,没有必要将当前页面替换为空白。
我猜当请求被发送时,Firefox知道它的响应是否会替换当前的网页,所以应该创建一个新的DOMWindow
并分配一个新的内部窗口id。
任何想法?
我猜当请求发送时,Firefox知道它的响应是否会替换当前的网页,所以应该创建一个新的DOMWindow,并分配一个新的内部窗口id。
这个假设是不正确的。这将取决于收到的回应(如果有的话)。某些东西可能会在发出请求后阻止/取消请求,或者服务器可能根本不返回任何数据(或者附加组件只是"吃掉"数据),或者返回无效数据或发出无效重定向等。
因此,在接收到至少一部分最终响应(足以知道如何继续)之后,一旦浏览器决定实际创建一个新窗口,将只会有一个新的窗口(和内部ID)。
既然你没有详细说明你最终想要达到什么目标,我就到此为止。
从技术上讲,这个假设也是不正确的,因为并不是所有的请求实际上都有一个相关的窗口。如果当前页面不会被新的http响应(例如图像,或Javascript)所取代,那么
LoadContext.associatedWindow
给出的当前窗口是好的。
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 检查iframe内部的窗口是否已关闭
- 如何使用AngularJS在点击身体内部任何位置时显示弹出窗口
- 如何使用 php 代码内部显示引导模式弹出窗口
- 如果通过字符串变量发送,HTML内部的子窗口将显示为文本
- 窗口.内部宽度 = 0
- 为什么jQuery可以从内部调用窗口,却要将窗口发送给自己
- 获取占x滚动条高度的窗口内部高度
- 如何调整浏览器窗口的大小,使内部宽度为特定值
- 重定向至与窗口宽度相关的内部页面
- 单击链接按钮时,无法从更新面板内部打开新窗口
- 调整窗口大小时更新窗口内部高度
- "FB没有定义为“FB”;内部窗口.fbSyncInit
- 如何防止firefox内部的javascript关闭窗口/选项卡
- 窗口内部宽度大小更改
- Wordpress定制预览脚本在初始页面加载时执行实时预览,而不是在我从预览窗口导航内部页面时执行实时预览
- 日期picker内部引导弹出窗口
- 如何禁用一个JavaScript,与内部窗口宽度
- 是否可以使用"var"将函数绑定到窗口?从函数内部
- Firefox什么时候创建一个新的内部窗口?