Использование JavaScript для замены таблицы стилей href перед ее загрузкой с сервера - PullRequest
0 голосов
/ 04 апреля 2011

Можно ли заблокировать загрузку внешних скриптов / таблиц стилей с помощью небольшого количества javascript? Например, поместив крошечный блок javascript в самый верх <head>, чтобы выполнить некоторую операцию со всеми тегами <script> и <link> в документе, возможно, изменив относительные пути к абсолютным путям, до их исходные относительные пути загружаются с сервера?

Я не ищу альтернативы, такие как обработка на стороне сервера или ручное изменение тегов <script> и <link>. Я заинтересован в проверке концепции сценария, в котором у меня нет контроля над конечным документом или его генерацией , за исключением , вставляющего один тег сценария.

Ответы [ 3 ]

3 голосов
/ 04 апреля 2011

Нет, вы не можете.

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

Кроме того, браузер загружает JavaScript, как только он попадает в тег скрипта, и останавливает анализ html до тех пор, пока тег скрипта не завершится.

Это означает, что с помощью JavaScript нет способа сделать это.

0 голосов
/ 04 апреля 2011

Ну, CSS работает довольно интересно, в том смысле, насколько он динамичен. При этом вы можете использовать javascript для обновления URL-адреса css после его загрузки, и его эффекты будут аннулированы при изменении ссылки (уверен на 99%).

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

Чего вы пытаетесь достичь?

0 голосов
/ 04 апреля 2011

Может быть что-то об этом:?

$(function(){
    $("link").each(function(){
        $(this).attr('href','NEW_URL.css');
    });   
});

Это изменит атрибуты href всех элементов, но я не могу гарантировать, что это изменит стили, потому что этот скрипт будет выполняться при DOMготов.

PS Это не чистый javascript - это jQuery (извините, если вам нужен чистый javascript)

PPS - я только что попробовал - CSS применяется.Это не значит, что вы можете заблокировать загрузку файлов CSS, написанных в теге.Они загружаются, но когда DOM готов (документ загружен) - стили меняются.Это довольно быстро - вы не сможете увидеть старые стили =)

...