在辅助屏幕上定位弹出窗口

时间:2014-07-04 09:49:46

标签: javascript google-chrome popup popupwindow

我正在尝试为自己创建一个私人网页,该网页会在我的辅助显示器上打开一个网站作为弹出窗口。我可以在我的主显示器中自动定位弹出窗口,浏览器覆盖整个屏幕,很好,但当我尝试自动将创建的弹出窗口移动到我的其他屏幕时,它只是拒绝去那里。

我正在尝试的代码是

window.open('https://tweetdeck.twitter.com','Tweetdeck','width=1664,height=488,toolbar=0,menubar=0,location=0,status=1,scrollbars=1,resizable=1,left=-1680,top=591');

我也尝试使用.moveTo得到相同的结果。

top定位工作正常,但left在小于0时似乎没有效果。left=-1680,top=591是我要将其移动到的确切位置(已选中)使用autohotkey window spy),但Chrome似乎并不愿意这样做。

我觉得这可能是由于position error correction,但是那个位置的窗口非常在我的桌面上并且完全可见。

有没有办法可以自动将窗口移动到javascript中的指定像素坐标?

1 个答案:

答案 0 :(得分:0)

这是一个极具挑战性的问题,但我担心在dual view模式下它是不可能的;我还有两台显示器在双视图模式下工作。看看这个

if (!w || w.closed) {
    w = window.open("","links","menubar=0,scrollbars=0,width=600,height=480");
}
w.document.write("<p>X: " + w.screenX + "Y: " + w.screenY + "</p>");

// center in
w.moveTo((screen.width/2)-(640/2),(screen.height/2)-(480/2));
// horizontal positioning fails

// try the negative value
w.moveTo(-300,300); // it fails again

w.focus();
// it only works if you move the popup window by hand 
// after that it has already been instantiated

如果我合并我的两个屏幕,也许它可以工作,不确定。我会在此期间检查它并在此处回复结果。

EDIT是的,如果我以所谓的horizontal span模式合并我的两个屏幕,它就有效。

我相信还有另一种解决方案,例如构建一个小型的C / C ++应用程序来处理活动窗口但不是很奇怪:)

var oShell = new ActiveXObject("Shell.Application");
var commandtoRun = "C:\\PopupWinHandler.exe"; 
oShell.ShellExecute(commandtoRun,"","","open","1");

但是,这是jsBin实验,所以你可以玩。