Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите открыть фрейм (https://javascript.ru/forum/misc/65047-pomogite-otkryt-frejjm.html)

gunis 22.09.2016 09:58

Помогите открыть фрейм
 
Добрый день, есть скрипт редиректа (редирект - громко сказано) во фрейме внутри своего сайта, можно сказать открытие фрейма внутри своего сайта с помощью яваскрипт. Многим давно известный способ. Мнения конечно разделяются, одни считают что поисковики умеют читать и скрипты и фреймы и что за это бан, другие это отрицают обусловливая, что внутри своего сайта это не редирект и ничего страшного в этом нет или что они это не читают (тем более если это в ноиндекс) но суть в другом, все работает в фаерфоксе, а в других браузерах нет (((
скрипт в хедере:

<script type="text/javascript" src="http://мойсайт.ру/jsfiles/123.js"></script>

папка jsfiles со скриптом закрыта в роботсе от индексации
в этой папке скрипт 123.js с следующим телом:

doMagic();
function doMagic() {
document.write('<frameset rows="*,0" framespacing="0" border="0" frameborder="NO"><frame src="http://мойсайт.ру/zzz" noresize="" scrolling="auto"></frameset>')
}

в папке zzz находятся отличные от коренного/родительского индексный файл, css, htacces (htacces дубль коренного), т.е. то куда делается "редирект" , т.е. то что открывается во фрейме на весь экран.
Приемущество document.write в том что он НЕ меняет реферер в строке браузера и показывает в строке браузера адрес коренного/родительско документа с которого был "редирект".
Все работает в фаерфоксе, но т.к. разные браузеры интерпритируют фрейм по совему - отличные от фаерфокса другие браузеры этот фрейм не открывают.
если же в хедере использовать просто скрипт переадресации, то не сохраняется реферер...

Я не силен в скриптах и пхп, весь моск уже :blink: обгуглился, подскажите что нужно подправить чтобы открывалось во всех браузерах с реферером в строке браузера и именно через файл яваскрипт.

gunis 22.09.2016 11:56

По рекомендации на другом форуме поступило предложение добавить событие для БОДИ, называется ONLOAD. Вот в обработчике этого события нужно вызвать мою функцию doMagic. Скорее всего, причина проблемы в том, что разные браузеры могут по-разному подгружать скрипты, т.е. в разное время. А указанный обработчик будет гарантированно вызван после загрузки всех скриптов.

Добавил то что выделено жирным
window.onload = function doMagic();
function doMagic() {
document.write('<frameset rows="*,0" framespacing="0" border="0" frameborder="NO"><frame src="http:/............

Заработало во всех браузерах !

Очень смущает один момент, "cтpиптиз" перед открытием фрейма, т.е. 2 секунды видна родительская страница, а потом происходит открытие фрейма. Т.е. при переходе на сайт по ссылке или из поисковика на 2 секунды отображается страница без срабатывания скрипта, через 2 секунды срабатывает скрипт..
Подскажите пожалуйста, есть ли способ без "cтpиптизa" ?

gunis 22.09.2016 14:49

onload - Код переданный данному событию исполнится после того, как картинка или страница полностью загрузится. Поэтому у меня "cтpиптиз". Чтобы избежать моргания и "cтpиптизa" - нужно исполнене скрипта до загрузки страницы, т.е. когда строится DOM. Нашел что есть альтернатива document.write - это innerhtml, и якобы он читается всеми браузерами,но как прикрепить его в этой связке пока не пойму.

попробовал заменить ocument.write на innerhtml
doMagic();
function doMagic() {
innerhtml ('<frameset rows="*,0" framespacing="0" border="0" frameborder="NO"><frame src="http://мойсайт.ру/zzz" noresize="" scrolling="auto"></frameset>')
}

ничего не сработало...


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