Как загрузить и проанализировать страницу в фоновом режиме без загрузки изображений / скриптов? - PullRequest
1 голос
/ 13 января 2012

Какой лучший способ получить пригодную для использования DOM для страницы, запрашиваемой AJAX, без загрузки каких-либо связанных изображений / сценариев / и т. Д.?

Предыстория: Я хочу загрузить страницу в фоновом режиме, а затем выполнить своего рода анализ данных (это расширение для браузера, поэтому я не могу контролировать сами страницы). Я не хочу тратить время на загрузку изображений и запуск сценариев на фоновой странице, поскольку мне нужно только содержимое страницы.

Ответы [ 2 ]

0 голосов
/ 23 января 2012

Если возможно, используйте jQuery, как я упоминал выше.Это позволяет легко выбирать части DOM страницы по мере необходимости.

Вот несколько примеров:

Вы можете получить теги href attribute следующим образом: $ ("a", $ (ajax_response)) .attr ("href");

Содержание заголовка: $ ("title", $ (ajax_response)). html ();

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

0 голосов
/ 13 января 2012
  1. загрузка данных через ajax
  2. удалите все теги, содержащие атрибуты src и href, или просто измените значение этих атрибутов с помощью data:null. Если данные также содержат встроенный стиль, вы должны удалить все операторы, содержащие ссылку на внешние ресурсы (например, фоновые изображения и изображения границ, .htc компоненты, привязки xul, курсор .ico)
  3. добавить отфильтрованные данные в DOM и проанализировать их

шаг 2 может быть достигнут с помощью регулярного выражения в javascript. например,

/* here we are in the ajax "success" callback */
...
data = data.replace(/(src|href|style)=['"]([^'"]+?)['"]/gi, 
function(match, attribute) {
   return (attribute.toLowerCase() === 'style')
       ? attribute + '=""'             /* remove all inline style */
       : attribute + '="data:null"';   /* href and src set to data:null */

})

/* append filtered data */
$(data).appendTo($('body_or_other_element'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...