Ответ 1
Возможно, вам понравится проверить ссылки ниже:
var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);
F12 всплывает: SCRIPT5: Доступ запрещен. на строке 95, которая представляет собой строку xhttp.open.
Мой JavaScript кажется хорошо сформированным, и Firefox делает то, что я думаю, что он должен.
Я прочитал много вопросов, очень похожих на этот, поэтому я проверил одну и ту же исходную политику, но я не вижу, как это применимо, поскольку foo.xml находится в том же каталоге, что и html файл. Я открыл разрешения на создание сценариев в своей локальной интрасети и сказал МакАфи о том, чтобы провести пятиминутный перерыв, чтобы быть уверенным. Я даже пытался запустить IE в качестве администратора, так что это не может быть проблемой с разрешениями? Зачем еще IE запрещал доступ к локальному файлу?
Возможно, вам понравится проверить ссылки ниже:
Вероятно, у вас есть локальный файл в локальном файле. См. http://blogs.msdn.com/b/ieinternals/archive/2011/03/23/understanding-local-machine-zone-lockdown-restricted-this-webpage-from-running-scripts-or-activex-controls.aspx для объяснения.
В этом примере показано, как использовать AJAX для загрузки ресурсов с любого веб-сайта. он работает в браузерах. Я тестировал его на IE8-IE10, сафари, хром, firefox, opera.
if (window.XDomainRequest) xmlhttp = new XDomainRequest();
else if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "http://api.hostip.info/get_html.php", false);
xmlhttp.send();
hostipInfo = xmlhttp.responseText.split("\n");
var IP = false;
for (i = 0; hostipInfo.length >= i; i++) {
if (hostipInfo[i]) {
ipAddress = hostipInfo[i].split(":");
if (ipAddress[0] == "IP") {
IP = ipAddress[1];
}
}
}
return IP;
В IE7, IE8 и IE9 просто перейдите в Настройки- > Свойства обозревателя- > Безопасность- > Пользовательский уровень и измените параметры безопасности в разделе "Разное", установите "Доступ к источникам данных по доменам" в "Включить".
Это сообщение об ошибке (SCRIPT5: Access denied.) также может быть встречено, если целевая страница метода .replace не найдена (я неправильно ввел имя страницы). Я знаю, потому что это произошло со мной, поэтому я пошел искать дополнительную информацию о значении сообщения об ошибке.
Скорее всего, вам нужно, чтобы Javascript работал через SSL.
Источник: https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk
Я думаю, что проблема в том, что файл находится на вашем локальном компьютере, а IE запрещает доступ, потому что если он позволяет скриптам иметь доступ к файлам на компьютере, на котором работает браузер, это будет ОГРОМНОЕ отверстие безопасности.
Если у вас есть доступ к серверу или другому компьютеру, который вы могли бы использовать как один, возможно, вы могли бы попробовать поместить файлы на него, а затем запустить сценарии, как с веб-сайта.
Возможно, вы запрашиваете внешний ресурс, в этом случае IE нужен объект XDomain. См. Пример кода ниже, как сделать запрос ajax для всех браузеров с перекрестными доменами:
Tork.post = function (url,data,callBack,callBackParameter){
if (url.indexOf("?")>0){
data = url.substring(url.indexOf("?")+1)+"&"+ data;
url = url.substring(0,url.indexOf("?"));
}
data += "&randomNumberG=" + Math.random() + (Tork.debug?"&debug=1":"");
var xmlhttp;
if (window.XDomainRequest)
{
xmlhttp=new XDomainRequest();
xmlhttp.onload = function(){callBack(xmlhttp.responseText)};
}
else if (window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200){
Tork.msg("Response:"+xmlhttp.responseText);
callBack(xmlhttp.responseText,callBackParameter);
Tork.showLoadingScreen(false);
}
}
xmlhttp.open("POST",Tork.baseURL+url,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(data);
}
Я столкнулся с аналогичной проблемой в IE10. У меня было обходное решение, используя запрос jQuery ajax для извлечения данных:
$.ajax({
url: YOUR_XML_FILE
aync: false,
success: function (data) {
// Store data into a variable
},
dataType: YOUR_DATA_TYPE,
complete: ON_COMPLETE_FUNCTION_CALL
});
$.ajax({
url: '//freegeoip.net/json/',
type: 'POST',
dataType: 'jsonp',
success: function(location) {
alert(location.ip);
}
});
Этот код будет работать и на сайтах https
Откройте инструмент разработчика Internet Explorer, Инструменты → инструменты разработчика F12. (Я думаю, вы также можете нажать F12, чтобы получить его)
Измените Режим документа на Стандарты. (Страница будет автоматически обновляться, если вы измените Режим документа)
Проблема должна быть исправлена. Наслаждайтесь