Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка страницы по ходу ее загрузки (https://javascript.ru/forum/events/26354-obrabotka-stranicy-po-khodu-ee-zagruzki.html)

zOdmin 05.03.2012 22:11

Обработка страницы по ходу ее загрузки
 
Собственно вопрос в забже. :)

Я пытаюсь менять чужую страничку, ее интерфейс. Для этого прикрепляю локальные скрипты (они работают уже до начала загрузки страницы).

Далее можно указать window.onload, но здесь две проблемы:
1) Сама страница переопределяет window.onload под свои нужды.
2) Страница может грузиться долго, а загруженные элементы желательно модифицировать (innerHTML/outerHTML) как можно раньше. А то иначе страница загружается как есть, а потом (через заметное время) резко меняет свой вид.

Пробовал парсить весь документ, игнорируя факт загрузки. Но вот проблема: если элемент <h1>xxxyyy</h1> был загружен наполовину (<h1>xxx), то и для изменения будет доступна только половина. Остальная часть спокойно дозагрузится к модифицированному варианту.

Итак, вопрос - как определить, загружен элемент или нет? К примеру ищем первое вхождение h1:
var h1=document.getElementsByTagName('h1');
Как узнать, что h1[0] полностью загружен?

Serg_pnz 05.03.2012 22:37

Мой вариант.
1. Ставим greasemonkey для ФФ (при чем для хрома свои финты ушами, для оперы совсем свои, на ие не пробовал)
2. Делаем setTimeout и стартуем свою функцию.

Вариант как начать:
// ==UserScript==
// @name          Имя скрипты. лучше латинницей
// @namespace      *site.ru/*
// @description   Описание скрипта
// @include        *site.ru/*
// @require			[url]http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js[/url]
// ==/UserScript==

$(document).ready(function() 
{

//тут уж точно по загрузке, но с фреймами иногда не прокатывает, надо 

setTimeout(function(){

//основной код

},200);


});


Посмотреть, точнее получить ссылки где и как скачать, примеры с кроссдоменным запросом для вышеозначенных браузеров можно тут http://alideria.ru/forum.php?thread=7520&f=0 (первый пост)

zOdmin 05.03.2012 23:37

Цитата:

Сообщение от Serg_pnz
$(document).ready(function()

Это jQuery? Неужели все так сложно для простой проверки на готовность элемента?

Цитата:

Сообщение от nasqad
не помогай ему, он плохой

Почему плохой? :blink:

Serg_pnz 06.03.2012 06:58

zOdmin,
ну как бы мне проще на jQuery. Если ты знаешь js настолько, что можешь сам написать функцию ready, то по чему нет?
И опять-таки jQuery в дальнейшем пригодится для обработки и вставки результатов на страницу.

zOdmin 06.03.2012 09:12

Ладно, спасибо, попробую.


Часовой пояс GMT +3, время: 14:19.