Метатег не работает на одной странице, но работает на всех остальных?

Это метатег: <meta http-equiv="X-UA-Compatible" content="IE=edge" />

Работает на всех страницах, кроме 1.

Страницы визуализируются с помощью coldfusion, включают <cfinclude> и настраиваются в структуре каталогов, аналогичной MVC. Страница, на которой тег разбит, имеет собственный контроллер (но показывает только одну страницу), но этот контроллер идентичен другому. Я не уверен, что может быть причиной этого.

Страницы также настроены в модульном дизайне, где каждая функция страницы импортируется по частям. Каждая страница имеет свои уникальные модули, поэтому проблема в одном из этих фрагментов......... Я просто не знаю, в чем может быть проблема. Я прочесывал модули в течение последних нескольких дней и просто не мог найти его.

Что может быть причиной того, что этот метатег не работает? Здесь слишком много вставки кода, поэтому я надеюсь на ответ, который поможет мне найти решение. Я не верю, что это имеет какое-то отношение к Coldfusion.


person mawburn    schedule 21.09.2012    source источник


Ответы (3)


  • Во-первых, как сказал drezabek, проверьте результирующий HTML. IE особенно требователен к этому конкретному метазаголовку. По моему опыту, заголовок IE=EDGE должен быть самым первым заголовком на всей странице и должен быть первым элементом в верхней части вашего <head> Проверьте свой HTML, так ли это?

  • Во-вторых, Coldfusion, как известно, беспокоит лишние пробелы. Если над вашим типом документа или, возможно, над заголовком есть пробел, это может привести к его неисправности. Если вы сомневаетесь, всегда используйте output='false' для всех ваших функций, даже для ваших функций cfscript. Кроме того, даже некоторые нативные методы CF добавляют пробелы. Например, сериализуйте объект ORM, SerializeJSON(EntityLoad('blah')), и вы увидите, что он добавляет некоторые пробелы. Радость.

person Nucleon    schedule 24.09.2012
comment
HTML одинаков на обеих страницах, когда я просматриваю исходный код, и если это проблема с пробелами, это будет проблема с пробелами на всех страницах, потому что все они имеют одинаковый код заголовка. - person mawburn; 24.09.2012
comment
Не могли бы вы поделиться частью HTML? Добавьте его в jsfiddle или gist, если у вас нет общедоступного веб-сервера. - person Nucleon; 24.09.2012
comment
У меня нет общедоступного веб-сервера, и, к сожалению, информация является конфиденциальной. Я опубликую заголовки в исходном вопросе, надеюсь, это поможет. - person mawburn; 24.09.2012
comment
Проходя и пытаясь добавить его к вопросу, я обнаружил проблему. Я собираюсь дать вам +50 (через 8 часов из-за таймера на SO) и сам опубликую ответ. Спасибо! - person mawburn; 24.09.2012

Ответ должен лежать в HTML. Просмотрите исходный код страницы, которая работает, и страницы, которая не работает, и попробуйте найти различие, которое может вызвать проблему. Если не найдёте, может быть, выложите исходник сюда?

HTML действительно является ключом. После того, как вы это сделаете, поиск функции, вызывающей плохой HTML, должен быть легким.

person drdrez    schedule 24.09.2012

Кажется, я был неправ. На самом деле проблема связана с Coldfusion.

Поскольку я не создавал страницу, на которой возникла проблема, я пропустил важную часть. Человек, который его создал, использовал входные теги cfform с проверкой. Это заставило Coldfusion вставить это на отображаемую страницу в конце заголовка:

<script type="text/javascript"> 
<!--
    _CF_checkeditUserInfo = function(_CF_this)
    {
       //reset on submit
       _CF_error_exists = false;
       _CF_error_messages = new Array();
       _CF_error_fields = new Object();
       _CF_FirstErrorField = null;


       //display error messages and return success
       if( _CF_error_exists )
       {
           if( _CF_error_messages.length > 0 )
           {
               // show alert() message
               _CF_onErrorAlert(_CF_error_messages);
               // set focus to first form error, if the field supports js focus().
               if( _CF_this[_CF_FirstErrorField].type == "text" )
               { _CF_this[_CF_FirstErrorField].focus(); }

           }
        return false;
       }else {
           return true;
       }
   }
//-->
</script>

Теперь я не совсем уверен, что это делает, чтобы вызвать разрыв метатега, но когда я удаляю модуль, который вызывает создание этого скрипта, проблема исправлена. Когда это удалено, сравнение текста показывает, что отображаемые заголовки на обеих страницах имеют 0 различий.

Я полностью исправил свою конкретную проблему с помощью установка WebConfig в самом IIS.

person mawburn    schedule 24.09.2012