Может ли jQuery анализировать HTML, хранящийся в переменной?

#javascript #jquery #ajax

#javascript #jquery #ajax

Вопрос:

Я использую PHP и команду ajax для получения всего HTML-содержимого внешней веб-страницы (с помощью команды PHP file_get_contents() ) и передачи этого HTML в переменную javascript. Как только у меня есть HTML-содержимое страницы, сохраненное в переменной, могу ли я использовать jQuery для взаимодействия с содержимым этой переменной таким же образом, как jQuery обычно взаимодействует с DOM? В этом примере я пытаюсь выполнить поиск по существованию определенных HTML-элементов ( <div> и <script> тегов) с определенными атрибутами ID. Кто-нибудь может подсказать, как я могу этого добиться?

Комментарии:

1. Просто для пояснения, я хочу использовать jQuery для извлечения данных из переменной, которая содержит HTML-содержимое внешней веб-страницы.

Ответ №1:

Если я вас правильно понимаю, вы должны иметь возможность просто передать переменную в функцию jQuery и работать соответствующим образом.

Краткий пример с .filter() :

 $(myHtml).filter('#someid').doStuff();
  

Ответ №2:

Просто передайте его в виде строки конструктору jQuery.

 var foo = jQuery('<p><b>asd</b><i>test</i></p>').
alert(foo.find('i').text());
  

Ответ №3:

Для этого можно даже использовать собственный JS. В этом случае добавьте новый HTML в скрытый div, используя его свойство innerHTML следующим образом:

 document.getElementById('hidden_div_id').innerHTML = myHTML;
  

Как только новый HTML добавлен, вы можете перемещаться по узлам, используя любые методы, которые вы хотите.

Ответ №4:

Просто введите его в скрытый div и управляйте тем, что вам нужно от него там.

 var myHTML;//variable with html from php

var $hiddenDIV = $('<div></div>').hide().appendTo('body').html(myHTML);
/*Now you can traverse the contents of $hiddenDIV.
 * If you need to get the contents back:
 */ 
var newHTML = $hiddenDIV.html();
  

Комментарии:

1. Если бы я сделал это, как бы я предотвратил запуск javascript из HTML внешней веб-страницы?

2. Ну, вы могли бы удалить javascript из html и сохранить его в другой переменной, или, если вам вообще не нужен javascript для ваших целей, вы могли бы просто удалить его вообще. Дайте мне знать, если вам понадобится помощь в написании этого скрипта.

3. @jake — однако такой подход может быть излишним. Я бы использовал подход BoltClock.

Ответ №5:

ДА. И даже если это недоступно, вы могли бы создать невидимый div и затем проанализировать его там.