在网页开发中,我们有时候需要打开一个新的浏览器窗口,并且能够控制这个新窗口的尺寸和位置。在 JavaScript 中,我们可以使用 window.open
函数来实现这个功能。下面是一个示例代码,展示了如何使用 JavaScript 打开一个新的窗口,并设置其尺寸和位置。
/**
* @description 打开新窗口并设置其尺寸和位置
* @param {string} url - 要打开的 URL
* @param {string} title - 新窗口的标题
* @param {number} w - 新窗口的宽度
* @param {number} h - 新窗口的高度
*/
export default function openWindow(url, title, w, h) {
// 获取屏幕左侧和顶部位置(如果可用)
// Fixes dual-screen position Most browsers Firefox
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top
// 获取当前窗口的宽度和高度(如果可用)
const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width
const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height
// 计算新窗口的左侧和顶部位置
const left = ((width / 2) - (w / 2)) + dualScreenLeft
const top = ((height / 2) - (h / 2)) + dualScreenTop
// 打开新窗口并设置其属性
const newWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left)
// 将焦点放在新窗口上(如果可用)
// Puts focus on the newWindow
if (window.focus) {
newWindow.focus()
}
}
在这段代码中,我们定义了一个名为 openWindow
的函数,它接受四个参数:url
、title
、w
和 h
。分别表示要打开的 URL、新窗口的标题、以及窗口的宽度和高度。
首先,我们获取了屏幕的左侧和顶部的位置(如果可用的话),以及当前窗口的宽度和高度。然后,我们根据这些值计算出新窗口的左侧和顶部位置。计算的方法是将屏幕的中心点作为新窗口的中心点,并根据新窗口的宽度和高度来计算出左侧和顶部的位置。这样可以使新窗口始终位于屏幕的中心。
最后,我们使用 window.open
函数打开一个新的窗口,并设置其标题、宽度、高度、位置等属性。然后,我们尝试将焦点放在新窗口上,以便用户可以直接进行操作。
需要注意的是,由于浏览器安全性的原因,一些浏览器可能会阻止无用户交互的弹出窗口。因此,如果你在使用这段代码时遇到了问题,请确保将这个函数放在一个用户交互事件(如点击按钮)的处理函数中,或者在弹出窗口之前先获取用户的许可。