Выбор тега стиля удаленной страницы?

Я пытаюсь загрузить содержимое встроенного стиля удаленной страницы xhtml. Раньше я использовал загрузку, но это не работает, потому что загружает css внутри тега body. Поэтому я пытаюсь добавить стиль к тегу заголовка моей страницы.

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

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

Переменная css всегда равна нулю. Любые идеи?

Спасибо, Пит.


person Community    schedule 12.06.2009    source источник
comment
Я уверен, что это очень возможно. Когда я говорю удаленно, я имею в виду на своем сервере тот же домен. Запрос на получение в приведенном выше примере выполняется успешно, но по какой-то причине я не могу выбрать тег стиля. Я думаю, что что-то не так с тем, как я выбираю элемент, так как я новичок в jQuery.   -  person    schedule 13.06.2009


Ответы (2)


Из руководства по jQuery:

jQuery( html, [ownerDocument] )

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

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

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

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

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

person Rene Saarsoo    schedule 15.06.2009
comment
Благодарю вас! Вы так мне помогли. Я также использую этот метод для импорта удаленного java-скрипта на страницу моей структуры. - person ; 15.06.2009

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

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

person Sampson    schedule 12.06.2009