如何获取JavaScript以在当前监视器上打开弹出窗口

时间:2020-03-05 18:51:50  来源:igfitidea点击:

设想:

  • 用户有两个监视器。
  • 他们的浏览器在辅助监视器上打开。
  • 他们单击浏览器中的一个链接,该链接调用window.open()并具有特定的顶部和左侧窗口偏移量。
  • 弹出窗口始终在其主监视器上打开。

JavaScript中有什么方法可以使弹出窗口在与初始浏览器窗口(打开器)相同的监视器上打开?

解决方案

回答

只要我们知道特定监视器上的x和y位置,就可以执行以下操作:

var x = 0;
var y = 0;
var myWin = window.open(''+self.location,'mywin','left='+x+',top='+y+',width=500,height=500,toolbar=1,resizable=0');

回答

我们不能指定监视器,但是可以将弹出窗口的位置指定为相对于单击导致窗口弹出的位置。

使用getMouseXY()函数获取要作为左参数和顶部args传递给window.open()方法的值。 (左侧和顶部的args仅适用于V3和更高版本的浏览器)。

window.open文档:
http://www.javascripter.net/faq/openinga.htm

function getMouseXY( e ) {
    if ( event.clientX ) { // Grab the x-y pos.s if browser is IE.
        CurrentLeft = event.clientX + document.body.scrollLeft;
        CurrentTop  = event.clientY + document.body.scrollTop;
    }
    else {  // Grab the x-y pos.s if browser isn't IE.
        CurrentLeft = e.pageX;
        CurrentTop  = e.pageY;
    }  
    if ( CurrentLeft < 0 ) { CurrentLeft = 0; };
    if ( CurrentTop  < 0 ) { CurrentTop  = 0; };  

    return true;
}

回答

如果我们知道每个监视器的分辨率,则可以进行估算。
对于公共网站来说这是一个坏主意,但如果我们知道(出于某种奇怪的原因)这种情况将始终适用,则可能会很有用。

相对于鼠标(如上所述)或者原始浏览器窗口的相对位置也可能很有用,尽管我们必须假设用户使用的浏览器已最大化(不一定是正确的)。