Javascript 移动打开器窗口
Javascript Move opener window
我有两个窗口;一个在框架集中,另一个在新窗口中从另一个打开(window.open(...))。
我正在尝试将打开的窗口的左边缘移动到打开器窗口的右边缘。
以下是要求:
- 必须在 IE8 中工作。
- 无法修改打开器窗口中的代码。
- 打开的窗口应完全可见(请参阅右上角的 X)
我能够找到一个解决方案,该解决方案可以获得IE8窗口的正确宽度和高度(带有滚动条)。它涉及移动窗口并检查其值,但是当我运行 window.opener.moveTo() 时,它会移动框架而不是实际窗口,因此不会记录正确的值。
这是我目前使用的代码:
function moveAway()
{
//Array Style
var main = getWindowSize(window.opener)
var child = getWindowSize(window)
//How to move
var topAvail = main.top;
var bottomAvail = window.opener.screen.availHeight - main.bottom;
var leftAvail = main.left;
var rightAvail = window.opener.screen.availWidth - main.right;
var choice = Math.max(topAvail,bottomAvail,leftAvail,rightAvail)
if(choice == rightAvail)
{
window.moveTo(main.right,main.top)
window.resizeTo(rightAvail,main.bottom)
}else if(choice == bottomAvail)
{
window.moveTo(main.left,main.bottom)
window.resizeTo(window.opener.document.body.clientWidth,bottomAvail-36)
} else if(choice == leftAvail)
{
window.moveTo(0,main.top)
window.resizeTo(leftAvail,main.bottom)
} else if(choice == topAvail)
{
window.moveTo(main.left,0)
window.resizeTo(main.right,topAvail)
}
//return "item'ttop'tleft'tbottom'tright'nmain't" + main.join("'t") + "'nchild't" + child.join("'t")
}
function getWindowSize(windowObj) {
var wW, wH;
var wT = windowObj.screenTop;
var wL = windowObj.screenLeft;
if (windowObj.outerWidth) {
wW = windowObj.outerWidth;
wH = windowObj.outerHeight;
} else {
var cW = windowObj.document.body.offsetWidth;
var cH = windowObj.document.body.offsetHeight;
windowObj.resizeTo(500,500);
var barsW = 500 - windowObj.document.body.offsetWidth;
var barsH = 500 - windowObj.document.body.offsetHeight;
wW = barsW + cW;
wH = barsH + cH;
windowObj.resizeTo(wW,wH);
}
return { right: wW, bottom: wH, top : wT, left : wL };
}
如何让 JavaScript 在当前监视器上打开弹出窗口 处理定位弹出窗口,并包含有关获取屏幕和窗口坐标以及定位窗口的大量见解
您必须注意,许多浏览器将禁止有趣的行为,例如
- 屏幕外窗口
- 窗口比屏幕宽
- 跨多个屏幕的窗口
使用我对上述问题的回答中的代码,您可以从以下内容开始
// Pops a window relative to the current window position
function popup(url, winName, xOffset, yOffset, width, height) {
width = width || 100;
height = height || 100;
var x = (window.screenX || window.screenLeft || 0) + (xOffset || 0);
var y = (window.screenY || window.screenTop || 0) + (yOffset || 0);
return window.open(url, winName, 'top=' +y+ ',left=' +x + ',width=' + width + ',height='+ height);
}
var size = getWindowSize(window);
var popupWin = popup("http://www.google.com", "popup", size.right - size.left);
我不是在解决您对弹出窗口必须全部在屏幕上的担忧。那是因为我不知道如果主窗口全屏,你会做什么。
弹出窗口已经过时了,我知道有些人想使用它,但浏览器确实在与它作斗争(通过强加来自选项卡式窗口环境的规则)。你在这里逆流而上。
最后一点,您不需要移动窗口,只需指定顶部/左侧和宽度/高度,而不是在显示后移动窗口。查看我的弹出功能。
这里有一个jsfiddle,让你开始向我们展示你的问题
相关文章:
- 如何打开/移动主屏幕左侧的浏览器窗口
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- 将第二窗口移动到第二屏幕或特定屏幕
- 当移动地址栏出现/消失时,防止更改窗口高度
- 如何在缩放时获取移动浏览器窗口的宽度
- 如何在鼠标移动事件时更改图像的窗口中心和宽度
- 显示移动窗口时引导导航栏中的 atach 搜索栏
- 移动设备中的条纹支付弹出窗口
- 如何仅在窗口宽度从桌面(>1024px)更改为移动(<1025px)导航时重新加载页面
- 当窗口向上滚动时,如何使用粘性侧边栏向上移动
- 如何在单击 iframe 中的按钮后将整个浏览器窗口移动到另一个页面
- 是否可以将新打开的窗口移动到另一个显示器
- 用钛将一个窗口移动到另一个窗口
- 通过鼠标控制窗口移动
- 将窗口移动到顶部时出现问题
- 如何将浏览器窗口移动到灵活的手风琴选项卡的顶部
- .htaccess文件规则是干扰菜单栏布局时,窗口移动视图
- 当我们从一个弹出窗口移动到另一个弹出窗口时,滚动条的位置不会保留
- 谷歌地图信息窗口移动整个地图
- 如何使用Javascript将窗口移动x个像素