首页 > 解决方案 > 在 Microsoft Edge 中打开跨域窗口时忽略 window.open() 参数

问题描述

在 Microsoft Edge 中,以下代码段将忽略传递给window.open()whenurl与当前域不同来源的选项。但它在 Chrome 和 Firefox 中运行良好,并且当域是相同的来源时。

const popupWindow = window.open(
    url,
    title,
    'menu=no,toolbar=no,width=700,height=600,scrollbars=1,resizable=0,' +
        'directories=no,location=no,screenX=0,screenY=0,top=48,left=48',
);

我找到了一个 hacky 解决方法来让窗口正确调整大小,但这真的很烦人,你可以看到它重定向页面。

const popupWindow = window.open(
    "/#",
    title,
    'menu=no,toolbar=no,width=700,height=600,scrollbars=1,resizable=0,' +
        'directories=no,location=no,screenX=0,screenY=0,top=48,left=48',
);
popupWindow.location.href = url;

如何在 Microsoft Edge 上进行这项工作?为什么 Microsoft Edge 会忽略我的大小和其他参数?这是一个错误吗?

标签: javascripthtmlbrowsermicrosoft-edge

解决方案


我尝试检查问题,它看起来像与安全设置相关的问题。

我建议您修改以下Internet 选项设置。

(1)启用跨域访问数据源选项。

Internet选项->安全(选项卡)->自定义级别->其他->跨域访问数据源->设置为启用

(2)禁用保护模式

Internet 选项-> 安全(选项卡)-> 取消选中启用 Internet 和本地 Intranet 的保护模式

(3) 将两个域都添加到受信任站点列表中

Internet 选项-> 安全(选项卡)-> 受信任的站点-> 站点-> 将两个域添加到列表中。

(4) 取消勾选需要服务器验证(https:)

Internet选项->安全(选项卡)->受信任的站点->站点->取消选中需要服务器验证(https:)->输入本地主机URL并单击添加按钮。

修改上述设置后,我测试了这段代码。

const popupWindow = window.open(
    "https://Bing.com",
    "Microsoft page",
    'menu=no,toolbar=no,width=700,height=600,scrollbars=1,resizable=0,' +
        'directories=no,location=no,screenX=0,screenY=0,top=48,left=48',
);

Microsoft Edge 44.18362.1.0中的输出:

在此处输入图像描述


推荐阅读