Подготовка шаблона SSO к работе в Firefox
Автор Nikolay Ilin на 14 марта 2016 03:31 PM

Случается, что web шаблон, который был разработан для web страницы с помощью шаблонизатора в браузере Internet Explorer, не работает для этой же страницы в браузере Firefox.

В этой теме мы будем рассматривать причины данной ситуации и методы решения этой проблемы.

Обработка тэга комментария (<!--...-->).

Одной из причин, по которой web шаблон, созданный с помощью шаблонизатора в браузере MS Internet Explorer и полноценно работающий в данном браузере, не работает для браузера Mozila Firefox, может являться наличие среди web контроллов, по которым производится матчинг страницы, тэга комментария (<!--...-->).

Проблема заключается в том, что браузер MS Internet Explorer представляет комментарий (<!--...-->) в виде полноценного тэга, который может использоваться в web шаблоне в параметре <webNode> при определении пути к контролу. Mozila Firefox же интерпретирует тэг комментария со всем его содержимым в виде простой строки, поэтому использовать данный тэг в параметре <webNode> уже нельзя.

Пример:

Имеем следующий фрагмент кода web страницы:

...
<tr>
<td id="feedbackCell" colspan="2">

    <div id="feedbackArea" class="noFeedback">
          <!-- -->
    </div>

</td>
</tr>
...

Это фрагмент кода находится в той части web страницы, по которой производится матчинг, т.е. этот фрагмент описан в шаблоне. Видим, что присутствует пустой комментарий.

Ниже приведена часть шаблона, созданного шаблонизатором для браузера MS Internet Explorer, которая содержит описание этого фрагмента кода:

                 <webCtrl>
                    <path>
                      
                      ...

                      <webNode>
                        <tagName>TR</tagName>
                        <tagSiblingIndex>3</tagSiblingIndex>
                      </webNode>
                      <webNode>
                        <tagName>TD</tagName>
                        <tagSiblingIndex>0</tagSiblingIndex>
                        <id>
                          <value>feedbackCell</value>
                        </id>
                      </webNode>
                      <webNode>
                        <tagName>DIV</tagName>
                        <tagSiblingIndex>0</tagSiblingIndex>
                        <id>
                          <value>feedbackArea</value>
                        </id>
                      </webNode>

                      <webNode>
                        <tagName>!</tagName>
                        <tagSiblingIndex>0</tagSiblingIndex>
                      </webNode>

                    </path>
                  </webCtrl>

Видим, что комментарий определен, как отдельный тэг. Шаблон, содержащий данное описание контрола будет работать для браузера MS Internet Explorer, но не будет работать для Mozila Firefox.

Решение проблемы:
Для того, чтобы шаблон заработал для браузера Mozila Firefox, необходимо избавиться от описания web контролов, содержащих комментарии в разделе матчинга в шаблоне. Для этого необходимо удалить тэги <webCtrl>, которые содержат описание комментариев, со всем содержимым.

Для нашего примера необходимо удалить из шаблона весь кусок:

                 <webCtrl>
                    <path>
                      
                      ...

                      <webNode>
                        <tagName>TR</tagName>
                        <tagSiblingIndex>3</tagSiblingIndex>
                      </webNode>
                      <webNode>
                        <tagName>TD</tagName>
                        <tagSiblingIndex>0</tagSiblingIndex>
                        <id>
                          <value>feedbackCell</value>
                        </id>
                      </webNode>
                      <webNode>
                        <tagName>DIV</tagName>
                        <tagSiblingIndex>0</tagSiblingIndex>
                        <id>
                          <value>feedbackArea</value>
                        </id>
                      </webNode>

                      <webNode>
                        <tagName>!</tagName>
                        <tagSiblingIndex>0</tagSiblingIndex>
                      </webNode>

                    </path>
                  </webCtrl>

Теперь шаблон будет работать сразу для двух браузеров.

В исходном коде страницы в Firefox отсутствуют тэги, которые шаблонизатор обнаружил в Internet Explorer.

Может случиться, что одна и та же web страница отличается в браузерах MS Internet Explorer и Mozila Firefox. В частности, может отличаться исходный код страниц - тэги, которые присутствуют в коде страницы в Internet Explorer, отсутствуют в Firefox.

Если данные тэги используются в шаблоне для определения пути к web контролу, то шаблон будет работать для первого браузера, но не будет работать для второго.

Решение:
В шаблоне создать по отдельной форме (структура <formData>) для каждого браузера, чтобы обработать ситуацию с проблемными тэгами для каждого браузера по отдельности. В описании матчинга в путях к web контролам для страницы в Internet Explorer тэги будут присутствовать (можно использовать структуру <formData>, полученную шаблонизатором). В описании матчинга в путях к web контролам для страницы в Firefox структуру <webNode>, содержащую описание проблемных тэгов необходимо удалить.

Как определить, какие тэги отсутствуют:
1. Открыть web страницу в Internet Explorer и Firefox;
2. Сохранить исходный код страницы из каждого браузера в файл;
3. Сравнить полученные файлы:
  - Можно использовать текстовый редактор с подсветкой синтаксиса HTML и выполнять поиск различий вручную;
  - Для сравнения файлов можно использовать специальные утилиты, которые автоматически находят различия в файлах (например, WinMerge - http://winmerge.org).

(0 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: