Выбор стиля тега удаленной страницы? - PullRequest
2 голосов
/ 13 июня 2009

Я пытаюсь загрузить содержимое встроенного стиля удаленной HTML-страницы. Я использовал load ранее, но это не работает, потому что он загружает CSS внутри тега body. Поэтому я пытаюсь добавить стиль к тегу head моей страницы.

Проблема в том, что я не могу выбрать тег стиля, используя jQuery. Вот мой код:

            jQuery.get(contenturl, function(data) {
                var css = jQuery(data).find('style').html();
                alert(css);
            });

Переменная css всегда равна нулю. Есть идеи?

Спасибо, Пит

Ответы [ 2 ]

1 голос
/ 15 июня 2009

С Руководство по jQuery :

jQuery (html, [ownerDocument])

Простые элементы без атрибутов, например, "<div />", создаются с помощью document.createElement. Все остальные случаи анализируются путем присвоения строки к свойству .innerHTML элемента div. HTML-строка не может содержать недопустимые элементы внутри div, такие как html, head, body, или title elements.

Поэтому передача полного HTML страницы в функцию jQuery () не работает. (Хотя на самом деле это работает в Opera, но я думаю, вы хотите кросс-браузерное решение.)

Я бы порекомендовал получить CSS из тегов <style>, используя такие регулярные выражения:

jQuery.get(contenturl, function(data) {
  var styles = data.match(/<style.*?>[\s\S]*?<\/style>/ig);
  $("head").append(styles.join(""));
});

Это также должно быть намного быстрее, чем создание всего дерева DOM.

0 голосов
/ 13 июня 2009

Имейте в виду, что это работает только с локальными файлами. Чтобы сделать это с удаленным файлом, вам понадобится локальный PHP-скрипт, который взаимодействует с вашим JQuery-скриптом.

В следующем видеоуроке показано, как настроить локальный php-файл для этой цели: http://sampsonvideos.com/video.php?video=24

...