当我们写window.open()时到底发生了什么?

时间:2011-01-27 12:57:09

标签: javascript

当我们写

window.open(url,target,..)

打开一个新窗口..任何人都可以告诉我这是如何在内部发生的

2 个答案:

答案 0 :(得分:2)

以下是我能想到的一切:

  1. 浏览器决定是否忽略您的open请求,具体取决于其弹出设置(大多数浏览器会忽略不在直接响应中的对open的调用用户事件,如点击)。假设它允许:
  2. 浏览器会创建一个新窗口。它可能会也可能不会选择在新标签中创建该窗口,它可能会或可能不会注意您请求的尺寸和设置(如果您已经请求了一些)。
  3. 浏览器设置新窗口的opener属性,使其指向发出window电话的窗口的open对象。
  4. 浏览器开始将所需资源加载到新窗口中(如果您已提供要加载的资源)。
  5. window.open调用返回对新window对象的引用。
  6. 请注意,窗口彼此之间的引用是相关window对象的“外部”构面,这与实际窗口对象不一定相同。 (奇怪但却是真的;这是安全性的东西;更多的是this other StackOverflow question。)所以可能是因为你打开了一个窗口,你无法访问该窗口的内容,因为它来自不同的< EM>来源

    关于浏览器实际操作方式的 internals ,这完全取决于浏览器的实现。对于Firefox和Chrome等开源浏览器,您可以通过查看源代码找到...

答案 1 :(得分:0)

浏览器创建一个新窗口,设置名称,尺寸,位置,选项等,然后将URL加载到其中。这是你的意思吗?