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

<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.gif обгуглился, подскажите что нужно подправить чтобы открывалось во всех браузерах с реферером в строке браузера и именно через файл яваскрипт.
FatCat
Цитата (gunis @ 20.09.2016 - 23:11)
скрипт в хедере:
Цитата (gunis @ 20.09.2016 - 23:11)
document.write(

Какого черта document.write() запускается в хедере? Логичней после "боди" где-нибудь.

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

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
gunis
По Вашей рекомендации добавил то что выделено жирным
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
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>')
}

ничего не сработало...
Kusss
Как же так, неужели даже не посмотрели как правильно писать код ?
<div id="demo"></div>
doMagic();
function doMagic() {
document.getElementById("demo").innerHTML = "'тут новый текст'";
};
только подключайте свой скрипт после элемента, в котором делаете изменения
gunis
Подскажите пожалуйста, что взять за альтернативу дива. Я видел как писать код getElementById, но применить к диву не смог, т.к. вывести нужно всю страницу а не элемент.
Т.е. от

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

до
</html>
вот тут
document.write('<frameset rows="*,0" framespacing="0" border="0" frameborder="NO"><frame src="http://мойсайт.ру/zzz" noresize="" scrolling="auto"></frameset>')
как раз и применяется вся хтмл страница
а в случае с getElementById предполагается элемент, див, id ...
Kusss
document.body.innerHTML
Это ?
gunis
если я правильно понял, в исполняющем скрипте вставил ваше предложение:
doMagic();
function doMagic() {
document.body.innerHTML('<frameset rows="*,0" framespacing="0" border="0" frameborder="NO"><frame src="http://http://мойсайт.ру/zzz" noresize="" scrolling="auto"></frameset>')
}

фрейм не открлся (((
FatCat
<body id="demo">
- я бы так попробовал.
И скрипт после закрывающего "боди":
document.getElementById("demo").innerHTML = "'тут новый текст'";


_____________
Бесплатному сыру в дырки не заглядывают...
gunis
прошу прощения за кретинизм, что нужно записать в место "'тут новый текст'";
как это использовать чтобы открыть фрейм по адресу ('<frameset rows="*,0" framespacing="0" border="0" frameborder="NO"><frame src="http://мойсайт.ру/zzz" noresize="" scrolling="auto"></frameset>')
FatCat
Цитата (gunis @ 23.09.2016 - 11:57)
чтобы открыть фрейм по адресу ('<frameset

Секунду! Скрипт работает в контейнере <html> </html>.
Какой может быть frameset внутри этого контейнера?
Я по невнимательности думал, что у тебя айфрейм под 100% размера страницы...

_____________
Бесплатному сыру в дырки не заглядывают...
gunis
Все верно, нужно чтоб открывалось на 100% размера страницы.
Если frameset не подходит, как связать "'тут новый текст'" и открытие окна на 100% из адреса h t t p :// мойсайт. ру/zzz
FatCat
<iframe src="http://phpforum.su/" width="100%" height="100%" frameborder="0"></iframe>


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.