Javascript документ перезаписать страницу? - PullRequest
7 голосов
/ 23 декабря 2010

Я очень новичок в javascript.

Я пытаюсь создать тег, используя document.write (с Wordpress), чтобы добавить стиль, который скрывает изображения перед их предварительной загрузкой.Мне пришлось прибегнуть к написанию стиля Javascript, чтобы скрыть изображения перед их загрузкой через CSS.На самом деле я не хочу записывать его в файл CSS, если у пользователя отключен Javascript, и тогда изображения никогда не будут отображаться.

Я пытаюсь заставить этот код работать:

Но это просто перезаписывает всю страницу и делает ее пустой.Как я могу это остановить?Я хочу добавить тег к без удаления страницы.Пробовал с помощью «возврата», не повезло.

Извините, я новичок.Заранее спасибо.

Ответы [ 2 ]

18 голосов
/ 23 декабря 2010

Использование document.write() после завершения загрузки страницы неявно вызывает document.open(), что создает новую страницу. Как правило, вам следует избегать document.write() и придерживаться правильных методов создания DOM или использовать сокращенные методы создания jQuery:

jQuery(function($) {
    $('<style type="text/css"> .preload img { display: none; } </style>')
        .appendTo("head");
    $('#body-wrap').preloadThis();
});

<ч /> Я предполагаю, что вы не можете редактировать файлы HTML или CSS, которые загружаются страницей, чтобы включить это правило? Если это так, и вы хотите, чтобы эти стили применялись до завершения загрузки страницы, извлеките document.write() из обработчика готовности jQuery:

// write() before the document finishes loading
document.write('<style type="text/css"> .preload img { display: none; } </style>');
jQuery(function($) {
    $('#body-wrap').preloadThis();
});

Это позволит написать тег <style> сразу после выполняемого в данный момент тега <script>. Надеемся, что это в вашем элементе <head>, так как <style> недопустим где-либо еще, хотя все браузеры должны анализировать его в любом случае.

3 голосов
/ 23 декабря 2010

Вам не нужно добавлять тег <style>, вы можете просто скрыть их с помощью jQuery:

jQuery(function($) {
    $('.preload img').hide();
    $('#body-wrap').preloadThis();
});

Не знаю, как работает ваша preloadThis() функция, но я предполагаю, что она загружает изображения и удаляет класс .preload из img контейнера. Если он действительно работает так, этот код вам не поможет - изображения будут скрыты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...