在网络应用程序中,我在不同的点打开了很多弹出窗口。这些是使用 window.open() 打开的普通弹出窗口,而不是 Jquery 弹出窗口。它们在浏览器窗口的不同位置打开,并且高度和宽度也不同。
现在,我想在浏览器上打开时将所有弹出窗口居中。我编写了一个函数,它将返回顶部和左侧的值,以用于传递的高度和宽度的居中。现在,每次使用 window.open 打开弹出窗口时,我都需要调用此函数一次,获取顶部和左侧的值,然后将它们传递给 window.open。我最终可能会在各种 javascript 文件的很多地方这样做。
是否有一种通用方法可以实现我的要求,只需进行少量更改即可使使用 window.open 打开的所有弹出窗口居中。 Jquery 可以帮助我轻松做到这一点吗?
我认为这与您目前拥有的类似,但您可能想看一下。似乎没有太多必要使用 jQuery 链接
function PopupCenter(pageURL, title,w,h) {
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
只需将您的代码从
var params = getCenteredCoords();
window.open(url, "...", params+"...");
到
myPopup(url, "...", "...");
并声明一个全局
function myPopup(url, name, params) {
var coords = getCenteredCoords();
return window.open(ul, name, coords+params);
}
是的,您将需要在每个文件中包含自定义解决方案。所以唯一的方法就是不要重复自己并使用一个全局函数。
好的,有一种方法可以不更改所有文件中的所有内容:用您的自定义解决方案覆盖
window.open
:
window.open = (function(original){
return function myPopup(url, name, params) {
var coords = getCenteredCoords();
return original(ul, name, coords+params);
};
})(window.open);