Почему 'string' [0] ведет себя по-другому на ie8 + IIS7.5, чем другие браузеры или локальный файл? - PullRequest
3 голосов
/ 21 октября 2010

Рассмотрим следующий HTML-файл:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>test</title>
        <style type="text/css">

        </style>
    </head>
    <body>
        <script type="text/javascript">
            alert('' +
                '\'test\'[0] = \'' + 'test'[0] + '\'\n' +
                '\'test\'.charAt(0) = \'' + 'test'.charAt(0) + '\'\n'
            );
        </script>
    </body>
</html>

Когда я открываю этот файл на моей локальной машине, он выдает следующий вывод (как в ie8, так и в Chrome):

'test'[0] = 't'
'test'.charAt(0) = 't'

Когда я размещаю этот файл на IIS7.5, я все равно получаю тот же результат в Chrome, но ie8 дает следующий результат:

'test'[0] = 'undefined'
'test'.charAt(0) = 't'

Как это возможно?

Ответы [ 2 ]

0 голосов
/ 22 октября 2010

Ян, просто чтобы добавить к своему собственному ответу, более совместимый со стандартами способ включения представления совместимости будет просто использовать стандартный тип документа в начале вашего документа.

<!DOCTYPE html>

Что такое HTML5doctype, должен также перевести вас в стандартный режим.

0 голосов
/ 21 октября 2010

ОК. Я узнал, что это из-за совместимости.Internet Explorer входит в стандартную комплектацию (думаю, я не являюсь владельцем этого ноутбука) с возможностью отображения всех страниц интрасети в режиме совместимости.Чтобы заставить его использовать вид совместимости ie8, мне пришлось добавить следующий метатег к элементу head:

<meta http-equiv="X-UA-Compatible" content="IE=edge" > <!-- IE8 mode -->

Вы также можете отключить эту опцию в «Страница»> «Настройки просмотра совместимости»

Этот вопрос поставил меня в правильном направлении.

РЕДАКТИРОВАТЬ: Я советую веб-разработчикам оставить этот параметр отмеченным в ie8, потому что большинство ваших пользователейбудет проверено.Таким образом вы поймаете эти ошибки в цикле разработки.

EDIT2: sv_in верно.IE=edge намного чище.

...