Отказано в разрешении среды выполнения javascript браузера Microsoft Edge.

Следующий код для открытия календаря во всплывающем окне работает во всех браузерах, но в браузере 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 );

Кто-нибудь знает, почему это происходит?


person Jing    schedule 09.06.2015    source источник
comment
Я бы тоже хотел увидеть ответ на этот вопрос. Некоторые из наших тестов, которые выполняют window.open и doc.write в MS Edge, начали давать сбой с отказом в доступе.   -  person joeltine    schedule 04.11.2015
comment
Вы открываете это всплывающее окно автоматически при загрузке страницы или оно открывается в результате какого-либо взаимодействия с пользователем (например, нажатия кнопки)? Кажется, что если вы попытаетесь открыть всплывающее окно автоматически без явного взаимодействия с пользователем, чтобы вызвать его, Edge всегда будет его блокировать. Даже если вы выберете «Всегда разрешать», Edge все равно будет блокировать его. Я не могу воспроизвести вашу ошибку отказа в разрешении, но я нашел эту ошибку, которая может быть связана. Я тоже не могу его воспроизвести: connect.microsoft.com/IE/feedback/details/1948354/   -  person MarkPlewis    schedule 05.11.2015
comment
Возможно, попробуйте проверить HTML в вызове document.writeln. Элементы title и link должны быть вложены внутрь элемента head, и, возможно, вам следует попробовать добавить элемент body и закрывающий тег html. Кроме того, я не знаю, что содержит ваша переменная js, но вам может понадобиться сделать что-то подобное с вашими тегами script: stackoverflow.com/questions/236073/   -  person MarkPlewis    schedule 05.11.2015
comment
попробуйте сначала сделать popupWindow.document.open(), затем используйте document.writeln('your-html') и, наконец, document.close() и посмотрите, будет ли это лучше   -  person Zorgatone    schedule 09.11.2015
comment
вам нужно событие setTimeout или load, чтобы возвращаемый объект окна имел полностью заполненный объект документа.   -  person dandavis    schedule 10.11.2015


Ответы (2)


Я думаю, проблема здесь в политике одного и того же происхождения. IE (и, скорее всего, Edge), вероятно, считает, что окно, открытое с '' (пустым) URL-адресом, находится в другом домене, чем вызывающий код. Попробуйте открыть пустую HTML-страницу, например, вместо пустого URL-адреса.

person Stefan Gehrig    schedule 11.11.2015
comment
Другой вариант — попробовать about:blank, хотя в прошлом пустой хостинг оказался для меня более надежным. - person Juan Mendes; 11.11.2015
comment
@JuanMendes: я думаю, что about:blank тоже не сработает - по крайней мере, в наших тестах с IE10+. - person Stefan Gehrig; 11.11.2015

Это из-за политики безопасности контента.

Короче говоря, вы должны сказать Edge, чтобы он работал небезопасно со стороны сервера. https://docs.webplatform.org/wiki/tutorials/content-security-policy

Проверьте другие ссылки здесь https://msdn.microsoft.com/en-us/library/dn904195(v=vs.85).aspx

person unconnected    schedule 11.11.2015