Javascript 本地存储和弹出窗口在windows pc上不工作
我目前在代码上遇到了一个非常困难的bug。这段代码适用于我的MacOS(firefox、opera、safari和chrome),也适用于我拥有的另一台Windows机器。然而,它不能在朋友的电脑上使用Windows、Opera、Chrome或Edge 代码的作用是:Javascript 本地存储和弹出窗口在windows pc上不工作,javascript,popup,local-storage,Javascript,Popup,Local Storage,我目前在代码上遇到了一个非常困难的bug。这段代码适用于我的MacOS(firefox、opera、safari和chrome),也适用于我拥有的另一台Windows机器。然而,它不能在朋友的电脑上使用Windows、Opera、Chrome或Edge 代码的作用是: 用户单击按钮 我打开第三方网站的弹出窗口 这会将我重定向回带有url上的代码的站点 我使用该代码获取服务器,该服务器获取用户信息的api 我在弹出窗口中收到该信息并将其保存到localStorage 主窗口检测到存在存储事件并显
- 用户单击按钮
- 我打开第三方网站的弹出窗口 这会将我重定向回带有url上的代码的站点
- 我使用该代码获取服务器,该服务器获取用户信息的api
- 我在弹出窗口中收到该信息并将其保存到localStorage
- 主窗口检测到存在存储事件并显示用户信息
- 弹出窗口被强制关闭(即使未启用windows.close功能) 触发)
- 即使数据存储在弹出窗口中,我也能看到它 在那里,它不会显示在主窗口存储上
function loginButtonAction(event) {
window.open(fenixRequestUserPermissionURL, '_blank', 'width=750,height=675');
fenixLoginButton.classList.add('is-loading');
window.addEventListener('storage', function() {
var userData = JSON.parse(localStorage.getItem('fenix-user'));
registerUser(userData);
localStorage.removeItem('fenix-user');
});
event.preventDefault();
fenixLoginButton.removeEventListener('click', loginButtonAction);
}
fenixLoginButton.addEventListener('click', loginButtonAction);
window.addEventListener('load', function() {
var params = new URL(window.location.href).searchParams;
if (params.has('code')) {
var code = params.get('code');
fetch('/fetchInfo/' + code)
.then(function (response) {
return response.json();
})
.then(function(received) {
localStorage.setItem('fenix-user', JSON.stringify(received));
window.close();
}).catch(function(error) {
console.warn(error);
});
}
});