gpt4 book ai didi

javascript - 如何关闭window.open打开的窗口?

转载 作者:行者123 更新时间:2023-12-02 23:18:57 25 4
gpt4 key购买 nike

如何关闭由 window.open 打开的窗口?目前我有一个带有处理 OAuth 的服务器端的 ReactJS 应用程序。

流程是这样的:1)用户单击按钮并打开一个重定向到服务器端的新窗口(服务器端重定向到身份验证服务)。2)服务器端向客户端发出一个套接字io事件以及身份验证成功后收到的用户信息3)通过window.open()打开的窗口最终将被关闭。

下面粘贴相关代码

componentDidMount() {
const {
socket,
provider
} = this.props
console.log('component did mount')

socket.on(provider, user => { // Event listener
// Window should be closed at this stage after listening to event.
console.log(user)
this.setState({
user
})
this.props.addUser(user.name, 10)
})
}

startAuth() {
const {
provider
} = this.props

const width = 600,
height = 600
const left = (window.innerWidth / 2) - (width / 2)
const top = (window.innerHeight / 2) - (height / 2)
const url = `https://localhost:5000/${provider}`

return window.open(url, '', // Open window to server side
`toolbar=no, location=no, directories=no, status=no, menubar=no,
scrollbars=no, resizable=no, copyhistory=no, width=${width},
height=${height}, top=${top}, left=${left}`
)
}

我尝试在socket.on()中执行window.close(),但它关闭了错误的窗口,而不是window.open()打开的窗口。我还尝试在发出套接字 io 事件后在服务器端添加 window.close() ,但这也没有做任何事情。非常感谢任何帮助。

最佳答案

您需要保留对打开的窗口的引用并对其调用关闭。

const opened = startAuth();

opened.close();

关于javascript - 如何关闭window.open打开的窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57033094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com