У меня озадачивает проблема: это, казалось бы, простая страница не работает в IE9:Отказано в доступе при доступе к navigator.userAgent в IE9
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<!-- jq.js is the non-minified jQuery library -->
<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('body').append('<h1>ok</h1>');
});
</script>
</head>
<body>
</body>
</html>
поведение я получаю, что иногда страница отображается «ОК ", и иногда ничего не отображает. Я узнал, что это зависит от того, насколько быстро компьютер. Если вы находитесь на быстром компьютере, он обычно работает, но на медленных компьютерах он выходит из строя примерно в 2 раза из трех раз.
Когда я смотрю в консоли отладки, симптом заключается в том, что jQuery получает разрешение, отклоненное при попытке доступа к navigator.userAgent
.
Браузер записывает (в журнале), что он переключается с quirks
на режим IE9
. Моя гипотеза заключается в том, что jQuery загружается до того, как браузер переключится на режим IE9
, в результате чего jQuery будет пойман в режиме quirks
и оттуда не сможет получить доступ к каким-либо атрибутам браузера.
Я попытался вставить <!doctype html>
и вставил X-UA-Compatible
мета-тег, чтобы сделать переключатель IE9 в режиме IE9
сразу, но это не решает проблему.
мне удалось выйти из JQuery и воспроизвести проблему с помощью этого простого фрагмента кода: (. Доступно в http://test.m.e17.dk/ie9-navigator/)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
</head>
<body>
<script type="text/javascript">
document.write('<h1>testing</h1>');
try {
document.write('<h1>' + navigator.userAgent + '</h1>');
document.write('<h1>ok</h1>');
} catch(e) {
document.write('<h1>not ok</h1>');
}
</script>
</body>
</html>
Воспроизведите его:
- Откройте страницу ,
- Пресс F5.
- Поместите курсор в адресную строку.
- Нажмите enter.
Повторите шаги 2-4, как это часто бывает. Может возникнуть проблема, не дожидаясь загрузки DOM (как указано в http://bugs.jquery.com/ticket/12282).
Удалите ' XML версия = "1.0" кодирование = "UTF-8"?>' Сверху. –
... но страница должна начинаться с '' '' (пробовала безрезультатно) или объявления XML, подобного этому ...? – mzedeler
У вас есть '' ** вместо ** тега XML? –