LINUX.ORG.RU

Гарантировано заменить всю страницу сайта js'ом.


0

1

Задача. Подключить в head страницы скрипт, который гарантировано заменит видимое содержимое страницы. Как бы ответ очевиден - просто взять и заменить содержимое <body></body> целиком на содержащиеся зараннее в скрипте. Вопрос - какие могут быть подводные камни, учитывая что ничего о заменяемой старнице (как то - ее содержимое, подключенные другие скрипты и стили, и т.п.) неизвестно.

★★★★★
Ответ на: комментарий от minakov

К сожалению как заменить страничку без js я не знаю... Вообще нет идей (((

Suntechnic ★★★★★
() автор топика

Что-то типа document.querySelector('body').innerHtml = "Новое содержимое".
Подключение стилей/скриптов делается через head. Погугли.
Т.е. соответственно делаешь querySelector('head') и у него в .childs добавляешь/убираешь

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)

Рантайм что запустился до тебя никуда не денется.

В такой постановке вопрос сильно глупый, объясни чего хочешь.

Kalashnikov ★★★
()
Ответ на: комментарий от Bad_ptr

Что-то типа document.querySelector('body').innerHtml = «Новое содержимое».

Да - это понятно. Вопрос в том, не законфликтует ли скрипт с содержимым. Может как-то можно запустить скрипт, так чтобы знать, что все другие js уже выполнены и css подтянуты. А еще лучше их выкинуть чтобы они не грузились вообще, чтобы не напрягать сервер клиента и пользователей лишний раз. Смысл вобще в том, чтобы как-то проинклюдится в страницу так, чтобы показать вместо нее свою страницу и без багов. Ну и чтобы инклюд был предельно простым - тут как раз и приходит идея менять все js'ом. Просить большего от клиентов чем добавить себе в head одну строчку я не рискну.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Kalashnikov

Гарантировано заменить всю страницу сайта js'ом. (комментарий)

Этого и хочу - подменить страничку на мою либо добавить в страничку свое содержимое. Но сделать это так, чтобы админам сайтов где это будет, было максимально просто добавить этот функционал. Что показать - реальную страницу или мою, буду решать уже я.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от x_hash

Не - редирект нельзя. Надо именно так, чтобы пользователь видел что страничка именно на этом домене. Ну и увод посетителей это можно сказать...

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Suntechnic

Что это за сервис такой что ты считаешь себя важнее родной страницы? Так только вирусня и прочая гадость себе ведёт. Тебе должно быть пофигу что происходит на странице. Обернись в замыкание и не будет никаких конфликтов, потом делай что тебе надо никак не соприкасаясь с кодом страницы. Если ты влезаешь в чужой неизвестный код без конфликтов не получится, в любом случае какой-то код может запуститься до тебя, а потом гадить от того что ты ему страницу поломал.

Чтоб запуститься после всего надо плясать с defer и/или onload на всё наверно.

Kalashnikov ★★★
()

Да, и сопутствующий вопрос - какой Content-Type в http заголовков должен быть у js? text/javascript? Правильно же?

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Kalashnikov

Да, это почти вирусня и есть. Только званная. Ну типа заглушки про то что ie должен умереть. Помнишь были популярны? Как доделаю - покажу.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Ford_Focus

У них же тоже может быть onload. Ну и defer конечно.

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Kalashnikov

Ну если оно не будет гадить алертами - бог с ним...

Suntechnic ★★★★★
() автор топика

Как бы ответ очевиден - просто взять и заменить содержимое <body></body>

В ExtJS так и делают. Единственное - надо стили как-то удалить лишние. Но это легко гуглится.

KennyMinigun ★★★★★
()
Ответ на: комментарий от Suntechnic

А, ну это куда эффективней делать сервером. Ну и фичедетект во все поля, хватит к браузерам принюхиаваться.

По твоей реализации думаю и правда пофиг на страницу, можно просто оверлей растянуть на всё окно и пусть страница под ним и живёт.

Я когда таким баловался просто делал редирект на смишную картинку.

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

А нафиг мне фичдетект если я тупо собираюсь тупо

window.onload = function() {
    document.body.innerHTML = '<style>    * {        margin: 0 !important;        padding: 0 !important;        border: none !important;    }        html,    body {        height: 100% !important;    }                html #fa-wrapper {            min-width: 100% !important; min-height: 100% !important;            width: 100% !important; height: 100% !important;        }                #fa-wrapper {            min-width: 100% !important; min-height: 100% !important;            width: 100% !important; height: 100% !important;            background: #111111 !important;            color: #AAAAAA !important;                    }</style><div id="fa-wrapper">    Тут пишем всякую лабуду...</div>';
}
сделать?

Т.е. предельно простая функция в одно слово

Suntechnic ★★★★★
() автор топика
Ответ на: комментарий от Bad_ptr

document.querySelector('body')

Дожили, body querySelector'ом ищем…

Deleted
()
Ответ на: комментарий от Suntechnic

инкрементирую iframe, иначе твой скрипт должен будет подключаться раньше всего в <head> и останавливать загрузку всего остального
случаем не твое поделие? или им вдохновлялся?

EugeneBas ★★
()
Ответ на: комментарий от Suntechnic

Если нужна заглушка про ie, чем conditional comments и редирект неугодили?

tehead
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.