#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 и затем проанализировать его там.