Javascript 在新的空白选项卡上异步设置location.href不在MS Edge上工作
我想使用Javascript 在新的空白选项卡上异步设置location.href不在MS Edge上工作,javascript,microsoft-edge,Javascript,Microsoft Edge,我想使用\u authTab=window.open('''.'u blank')打开新选项卡异步设置它的url 例如setTimeout(()=>\u authTab!.location.href=)https://stackoverflow.com/', 2000);。在chrome上,一切正常:空白页面打开,2秒钟后https://stackoverflow.com/已加载 function setUrlAsync(): AsyncAction { let _authTab: Wind
\u authTab=window.open('''.'u blank')打开新选项卡代码>异步设置它的url
例如setTimeout(()=>\u authTab!.location.href=)https://stackoverflow.com/', 2000);代码>。在chrome上,一切正常:空白页面打开,2秒钟后https://stackoverflow.com/
已加载
function setUrlAsync(): AsyncAction {
let _authTab: Window | null;
return async (dispatch, getState, api) => {
try {
let authTab: AuthWindow;
_authTab = window.open('', '_blank'); // A new window has to be be opened synchronously to avoid pop-up blockers (https://stackoverflow.com/questions/2587677/avoid-browser-popup-blockers)
setTimeout(() => _authTab!.location.href = 'https://stackoverflow.com/', 2000);
} catch (error) {
authActions.callbackUrlNotReceived({ error });
throw error;
}
};
}
Ms Edge抛出一个错误,导致新选项卡保持空白
[object Error]: {description: "Permission denied", message: "Permission denied", nr@seenError: true, number: -2146828218, stack: "Error: Permission denied at Anonymous function (https://52f62d4b.ngrok.io/:149596:15) at nrWrapper (Unknown script code:1:16969)"}
description: "Permission denied"
message: "Permission denied"
nr@seenError: true
number: -2146828218
stack: "Error: Permission denied at Anonymous function (https://52f62d4b.ngrok.io/:149596:15) at nrWrapper (Unknown script code:1:16969)"
__proto__: Error
编辑
网页正在iframe中使用
<iframe
allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speaker *; usb *; vibrate *; vr *"
sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
src="....">
</iframe>
Edge可能认为窗口中的'
url.open('''.\u blank')
位于不同的域中。参考资料:
尝试打开空白页。如果删除沙盒属性,则可以在Edge上的新打开页中设置url
A.html
<iframe allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speaker *; usb *; vibrate *; vr *"
src="B.html">
</iframe>
B.html
<input type="button" value="test" onclick="opennew()" />
<script>
function opennew() {
var _authTab = window.open('', '_blank');
setTimeout(() => _authTab.location.href = 'https://stackoverflow.com/', 2000);
}
</script>
函数opennew(){
var _authTab=window.open(“”,_blank');
setTimeout(()=>\u authTab.location.href=>https://stackoverflow.com/', 2000);
}
从中可以看出,Edge不支持sandbox
的许多值。因此,这可能就是为什么当我们使用带有沙盒属性的iframe时,不能将url设置在边缘上的原因。请您至少解释一下否定的地方好吗?很好,但是带有这些确切道具的沙盒必须在那里。然后我想您只能尝试在边缘上同步加载url。我尝试了很多沙盒值的组合,结果总是显示错误,边缘显示“权限被拒绝”。