Jump to content
  • 0

Редирект отдельно открытой страницы в iframe


wodan
 Share

Question

Ни где в сети не смог найти готовое решение по загрузке отдельно открытой страницы в iframe (единственный фрейм на странице).

Необходимо, чтобы при открытии пользователем страницы не в iframe, осуществлялся редирект на основную страницу с iframe с последущей автоматической загрузкой страницы в этот iframe.

Не смотря на то, что похожий вопрос задавался (http://forum.htmlbook.ru/index.php?showtopic=6432&st=0&p=39652&hl=%D1%84%D1%80%D0%B5%D0%B9%D0%BC&fromsearch=1entry39652), ответа и решения нигде нет.

Скрипты типа:

<script language="JavaScript">

<!--

var string = location.search;

var current_page=string.substring (1, string.length);

document.write('<frameset rows="117,*" border="0" framespacing="0">');

document.write('<frame src="..filetop.htm" name="banner" frameborder="0" scrolling="0" marginHeight="0" marginWidth="0" noresize>');

document.write('<frameset cols="166,*" border="0" framespacing="0">');

document.write('<frame src="..filemenu.htm" name="contents" frameborder="0" scrolling="0" marginHeight="0" marginWidth="0" noresize>');

if (location.search == "") {

document.write('<frame src="..filemain.htm" name="main" frameborder="0" scrolling="0" marginHeight="0" marginWidth="0" noresize>');

} else {

document.write('<frame src="' + current_page + '" name="main">');

}

document.write('</frameset>');

//-->

</script>

не помогают, т.к. у меня нет frameset'а, а есть iframe в div'е

Пример моей страницы: http://evgenij-desinov.narod.ru/page/Albums/reading.html

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

редирект — это window.location.href = "http://новый адрес"

а уже что будет по этому новому адресу — решать вам. Пусть там будет страница с ифреймом.

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

Link to comment
Share on other sites

  • 0

на странице с фреймом (iframe.html), туда вбить адрес дефолтной страницы

<iframe id="myiframe" src="http://site.ru/default.html" width=500 height=500>

на странице с фреймом и всех страницах где должен быть редирект чтото типо этого:


(function(el, u){
//проверяем есть ли наш фрейм на странице
if(el != undefined){
//удсли есть проверяем есть ли для него адрес

if(u != "" && u.substring(1) != ""){//если адрес есть
//чтоб не вышло рекурсии добавляем флаг
el.src = u.substring(1) + "#embedded";
}
}else{
//проверяем во фрейме ли загружена страница
if(u != "#embedded")
//подставляем хеш и редиректим
window.location.href =
"http://site.ru/iframe.html#" + window.location.href;
}
})(document.getElementById("myiframe"), window.location.hash);

ЗЫ как-то так , на работоспособность не проверял

А вообще как я понимаю нужно запретить обращение к страницам которые должны загружаться только во фреймах? Обычно такие вещи делаются через php и без всяких фреймов с помощью include и контрольного флага.

к примеру на основной странице в нужном месте:


<html>
<head></head>
<body>
<?php
define ("INCPAGE", true);
include_once("/info.php");
?>
</body>

а на встаеваемой странице info.php в начале файла


<?php
if(!defined("INCPAGE")){
//если обратились напрямую редиректим по адресу url
header("Location: url");
}
?>
<div>мой контент</div>

Edited by wwt
Link to comment
Share on other sites

  • 0

Гениально!!! Получилось, но не сразу, едва не отчаялся. Теперь вот и не знаю, продолжать ли использовать фреймы или нет - уж больно нравятся они мне!

Вся закавыка была в том, что пытался прописать скрипт в теге <head>, в то время, как описание айфрейма находится в <body>. Фактически происходило вот что: сначала выполнялся скрипт, затем формировался iframe и загружал поверх нужной страницы заставку с iframe.html. Стоило скрипт поставить за тегом <iframe>, как все заработало.

Итог:

<iframe id="iframe" src="iframe.html" width="100%" height="97%" name="iframe" scrolling="auto" frameborder=0></iframe>

<script language="JavaScript" type="text/javascript">

<!--

(function(el, u){

//проверяем есть ли наш фрейм на странице

if(el != undefined){

//удсли есть проверяем есть ли для него адрес

if(u != "" && u.substring(1) != ""){//если адрес есть

//чтоб не вышло рекурсии добавляем флаг

el.src = u.substring(1) + "#embedded";

}

}else{

//проверяем во фрейме ли загружена страница

if(u != "#embedded")

//подставляем хеш и редиректим

window.location.href =

"read.html#" + window.location.href;

}

})(document.getElementById("iframe"), window.location.hash);

//-->

</script>

Думаю, теперь встанет вопрос в том, что при открытии в iframe других документов, адресная строка не меняется и возникнут сложности с формированием закладок. Буду изучать данный вопрос дальше.

Большое спасибо!!!

Link to comment
Share on other sites

  • 0

Кстати, чтобы страница не открывала весь сайт в iframe, при просмотре страницы с родительского окна, нужно на странице, для которой хотим сделать редирект, прописать проверку открыта ли она в родительском окне или нет.

Тогда функция будет такой:

if(self.parent.frames.length==0)

{

...

}

Link to comment
Share on other sites

  • 0

Это замена танцев с embedded )) Я оставил вам пищу для размышления =)

ЗЫ И все таки советовал бы использовать для таких целей не фреймы, а php.

Edited by wwt
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy