【问题标题】:Firefox: Open popup window repeatedly with the same properties (position, width/height)Firefox:使用相同的属性(位置、宽度/高度)重复打开弹出窗口
【发布时间】:2015-12-07 16:29:53
【问题描述】:

注意:这在 Google Chrome 中完美运行,但在 Firefox (42.0) 中是一个问题

最终,给定一个打开弹出窗口的页面,我想在关闭时记住弹出窗口的属性并在相同位置和相同尺寸重新打开它。

更正式一点,我想做以下事情:

  1. 用户点击“打开弹出窗口”按钮
  2. 打开弹出窗口
  3. 用户调整和移动弹出窗口的大小
  4. 用户关闭弹出窗口
  5. 用户点击“打开弹出窗口”按钮
  6. 在与用户上次关闭时窗口相同的位置和尺寸打开弹出窗口。

我尝试将unload 事件的位置/尺寸存储在 cookie 中,并在下次将这些值传递给 window.open() 但总是有一些像素偏移。

基本上我看到的问题是窗口的属性与传递给window.open() 的属性不匹配。

小示范:https://jsfiddle.net/8b2j3352/24(需要允许弹窗)

我收到innerWidth 546 innerHeight 218 outerWidth 561 outerHeight 294 screenX 109 screenY 54

这些值都不匹配提供给window.open()的属性:"width=500, height=200, top=50, left=100"

你知道有什么方法可以在相同的位置和相同的尺寸重新打开弹出窗口吗?

请注意,这在 Google Chrome 中按预期工作,它报告 innerWidth 500 innerHeight 200 outerWidth 510 outerHeight 260 screenX 100 screenY 50

【问题讨论】:

  • 它总是以相同的数量关闭吗?也许您可以每次只通过一个小计算来调整您的数字?我用各种设置在 IE 和 Chrome 中做了一些测试;到处都是。
  • @spozun 这些差异对我来说似乎并不合理——我觉得做一些简单的调整会很舒服。
  • 我已经为此向 Mozilla 提交了一个错误:link

标签: javascript popup window


【解决方案1】:

Element.getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。

https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect

【讨论】:

  • 我不明白这有什么关系。问题是关于弹出浏览器窗口,而不是里面的任何元素。
猜你喜欢
  • 2012-11-29
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
相关资源
最近更新 更多