2014-01-24 2 views
0

Я пытаюсь использовать DOM сайта с использованием CSQuery. Если я открываю сайт в IE и проверяю элемент, его HTML немного отличается (порядок атрибутов и промежуток между значениями) с одного и того же сайта, загруженного с использованием метода CSQuery.CreateFromUrl. Например, существует стиль div, сгенерированный IE, как «style = margin-bottom: 0.5em;» и для одного и того же метода рендеринга CSQuery генерируется другой HTML-стиль = margin-bottom: 0.5em; [Без пробела:].Почему существует разница между IE с DOM и CSQuery DOM?

В результате, когда я создаю селектор для CSQuery, например «div [style = 'margin-left: 0.5em;»], это не работает, потому что внутренняя DOM CSQuery не имеет места между': 'и «0,5».

Моя проблема заключается в том, что пользователи моего приложения будут использовать IE для проверки элементов DOM и, следовательно, создания селекторов CSS для запроса DOM с использованием CSQuery. Для этого случая я могу удалить пробелы из селектора в моем коде, но я не хочу этого делать, потому что могут быть некоторые другие незначительные различия между другими селекторами.

Итак, есть ли способ убедиться, что CSQuery генерирует ту же DOM, что и IE? Я пробовал использовать CSQuery.Creat (HTML return by IE), но каким-то образом CSQuery по-прежнему форматирует HTML таким образом, который отличается от IE DOM.

Спасибо, Тони

ответ

0
  1. Чтобы убедиться, что вы получите тот же ответ в объект CsQuery, как в вашем браузере IE, следует отключить JavaScript в вашем браузере, и не принимают куки с веб-сайта. (CQ.CreateFromURL возвращает рендер DOM, который не использовался javascript). Кроме того, иногда в ответ добавляется отложенный ответ, связанный с файлами cookie.

В вашем случае вам просто нужно установить «метод анализа».

Check out official documentation

Посмотрите на раздел 'Создание из HTML'.

Удачи.

+0

Я пробовал различные комбинации HtmlParsingMode & HtmlParsingOptions в методе создания, но не использовал. А что касается сайтов, которые используют Ajax для загрузки дополнительного контента, как CSQuery.CreatFromUrl обрабатывает такие сайты и генерирует DOM для них? – TonyMull

+0

Даже если я получаю html из моего элемента управления веб-браузером, а затем создаю объект CSQuery из этого html, он слегка изменяет/изменяет форматирование html ... – TonyMull

+0

@TonyMull, если веб-сайт загружает что-то через AJAX, CsQuery не будет обрабатывать это. В в этом случае вам нужно выяснить URL-адрес и загрузить его самостоятельно. Пройти тест: Запустите свой URL-адрес в браузере VS и посмотрите, какой ответ он возвращает. Если это то же самое, что и в браузере, поэтому проблема в CsQuery, но если это не так ... – nazarkin659

0

Проблема не в том, ни в IE, ни в CsQuery, оба работают как сконструированные. Проблема в том, что вы ожидаете того же выхода из двух разных синтаксических машин. IE использует mshtml, насколько мне известно, и CsQuery имитирует Gecko, который использует Firefox. Таким образом, чтобы получить тот же результат, вам нужно либо переключиться на mshtml, либо заставить пользователей использовать Firefox. Комбинация, которую вы выбрали, будет иметь несколько отличий, потому что философия синтаксического анализа немного отличается, и она показывает в этих аномалиях, которые вы видите.

Смежные вопросы