2012-02-14 2 views
1

Я хотел бы, чтобы javascript запускался после загрузки страницы, например, на примере ниже с задержкой в ​​6 секунд. Сразу после загрузки страницы остальная часть JS теряется (очевидно) ... Получил какой-либо идеал, как изменить контент после загрузки страницы без нажатия кнопки?Как изменить содержимое после загрузки страницы (JS)?

javascript:window.location = "http://example.com"; 
setTimeout(function() { 
    document.getElementById('lightbox').style.display = 'none'; 
}, 6000); 
+1

Посмотрите «манипуляции с домом» на google. –

+0

Мне это не удалось. У меня есть более 6 часов для поиска решения, и это моя последняя надежда получить помощь. – virusbogdan

+0

Вы хотите добавить скрипты на страницу, загруженную window.location? Я предполагаю, что эта страница не ваша? – Jivings

ответ

3

После установки window.location исходная страница будет выгружена до того, как новая страница будет загружена браузером. Это означает, что ваш скрипт исчезнет до того, как начнется загрузка новой страницы и, следовательно, больше не сможет изменять новый HTML-код.

Такое поведение присуще модели безопасности браузера. Без этого вы могли бы внедрить любой JavaScript в любой выбранный вами веб-сайт, что было бы огромным риском для безопасности. То, о чем вы просите, - это так называемый XSS (для межсайтового скриптинга), который предотвращает браузер, применяя так называемый SOP (для той же оригинальной политики).

Есть несколько распространенных способов обойти это ограничение безопасным способом:

  1. Настройка прокси-сервера, чтобы обслуживать как ваш JavaScript и оригинальный сайт. Таким образом, и ваш сценарий, и исходный сайт происходят из одного домена и удовлетворяют той же самой оригинальной политике браузера (SOP). Вы можете запустить исходный сайт в iframe, используя свой собственный скрипт, занимающий окно верхнего уровня. В качестве альтернативы вы можете вставить свой скрипт в HTML, поскольку он извлекается через ваш прокси.

  2. Запустите свой скрипт как дополнение к браузеру или пользовательский скрипт. Если вы решите сделать это, пользователь должен будет специально предоставить вашему сценарию права на локальную работу с повышенными правами. Несколько лет назад Greasemonkey популяризировал клиентские скрипты для Firefox, но в последнее время они, похоже, потеряли импульс.

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

  4. Попросите пользователя запустить ваш скрипт после загрузки сайта. Этот, вероятно, также недействителен для вас, но если он действителен, он снова станет очень простым решением.

0

Я не понял, что вы говорите. JS потерян? Пожалуйста, будьте более ясны.
Я думаю, что вы говорите, это функция jquery ready, которая запускается после того, как DOM готов.
Или в другом случае попробуйте использовать функцию window.onload().

+0

Извините, я не сделал себя чистым (английский не мой основной язык, я делаю все возможное) Код будет работать до загрузки окна и все. Остальное не будет запущено на новой странице. Попробуйте сами - javascript: window.location = "http://google.com"; setTimeout (function() {alert ('Loaded complete');}, 0); – virusbogdan

0

Это должно сделать работу:

$(window).bind('load', function() { 
// your code here 
}); 

Затем просто добавить задержку в свой добавленным код с .delay("6000");

Установленный код будет работать только тогда, когда ваша страница полностью загружена.

1

Ваш пример показывает, что вы сначала перенаправляете, а затем пытаетесь скрыть #lightbox. Этот скрипт не будет работать, потому что вы перенаправляете браузер на другой сайт до того, как скрывается ящик #lightbox.

Вкратце, вы не можете иметь Javascript предыдущей страницы, манипулировать DOM следующей страницы, если перенаправить пользователя на другой URL (или даже на тот же URL). Только Javascript, который находится на открытой странице, может манипулировать текущей открытой страницей и другими страницами.

+0

Ну да, это проблема. Я пытаюсь найти решение для этого, но кажется невозможным? – virusbogdan

+0

Да, это невозможно. Если у вас также есть доступ к сайту, на который вы перенаправлены, вы можете отправить определенную переменную GET или что-то, когда вы перенаправляете, а затем, соответственно, JavaScript на целевом сайте. Но чтобы подвести итог, да, невозможно контролировать Javascript другой страницы. JavaScript содержится на загруженной странице. – kingmaple

Смежные вопросы