【问题标题】:Microsoft Edge browser javascript runtime "permission denied" errorMicrosoft Edge 浏览器 javascript 运行时“权限被拒绝”错误
【发布时间】:2016-09-16 01:41:48
【问题描述】:

以下代码在弹出窗口中打开日历,适用于所有浏览器,但在 Microsoft Edge 浏览器中出现“权限被拒绝”错误。

popupWindow.document.writeln("<HTML>\n<TITLE>"+ title +"</TITLE>\n<link href='calendar.css' rel='stylesheet' type='text/css'>\n<HEAD>\n" + js + "</HEAD>");

之前的代码:

popupWindow = window.open("","CAL1","toolbar=no,location=no,status=no,
    menubar=no,scrollbars=auto,resizable=no,alwaysRaised=no,dependent=yes,
    titlebar=no," + strDims + ",left=" + xoffset + ",top=" + yoffset );

有人知道为什么会这样吗?

【问题讨论】:

  • 我也很想看到这个问题的答案。我们在 MS Edge 中执行 window.opendoc.write 的一些测试开始以“权限被拒绝”失败。
  • 您是在页面加载时自动打开此弹出窗口,还是由于某些用户交互(即单击按钮)而打开?似乎,如果您尝试在没有明确的用户交互来触发它的情况下自动打开一个弹出窗口,Edge 将始终阻止它。即使您选择“始终允许”,Edge 仍会一直阻止它。我无法重现您的“权限被拒绝”错误,但我发现了这个可能相关的错误。我也无法重现:connect.microsoft.com/IE/feedback/details/1948354/…
  • 也许可以尝试在您的 document.writeln 调用中验证 HTML。 titlelink 元素应该嵌套在 head 元素内,也许您应该尝试添加 body 元素和关闭 html 标记。另外,我不知道您的 js 变量包含什么,但您可能需要使用您的 script 标签执行类似的操作:stackoverflow.com/questions/236073/…
  • 先尝试popupWindow.document.open(),然后使用document.writeln('your-html'),最后使用document.close(),看看是否更好
  • 您需要一个 setTimeout 或 load 事件来允许返回的窗口对象具有完全填充的文档对象。

标签: javascript microsoft-edge


【解决方案1】:

我认为这里的问题是same origin policy。 IE(也很可能是 Edge)可能认为使用''(空白)URL 打开的窗口与调用代码位于不同的域中。例如,尝试打开一个空白的 HTML 页面,而不是一个空的 URL。

【讨论】:

  • 另一种选择是尝试about:blank,尽管过去证明空白托管对我来说更可靠。
  • @JuanMendes:我认为about:blank 不会工作得那么好——至少在我们的 IE10+ 测试中没有。
【解决方案2】:

这是因为内容安全政策。

很快,您必须告诉 Edge 从服务器端不安全地工作。 https://docs.webplatform.org/wiki/tutorials/content-security-policy

在这里查看其他链接https://msdn.microsoft.com/en-us/library/dn904195(v=vs.85).aspx

【讨论】:

    猜你喜欢
    • 2012-10-05
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多