Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2015, 21:51   #1
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
Вопрос JS и iframe

Доброго времени суток !

Столкнулся я тут с одной проблемой которую я навряд ли решу так как уже бьюсь не первый день .

К сути есть у меня iframe :

Код:
<iframe src="test.php" name="test" id="test" align="center" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"></iframe>
и есть JS для того что бы все что бы все содержимое iframe отображалось полностью

Код:
<script type="text/javascript">

var timeout;
 
function clickAction() {
    frameFitting();
    var fr = document.getElementById('test').contentWindow.document.body.getElementsByTagName('a');
    for (var i=0; i<fr.length; i++) {
        fr[i].onclick = function() {
            clearInterval(timeout);
            timeout = setInterval("frameFitting()",100);
        }
    }
}
 
function frameFitting() {
    document.getElementById('test').width = '100%';
    document.getElementById('test').height = document.getElementById('test').contentWindow.document.body.scrollHeight+4+'px';
}
 
onload = clickAction;

</script>
Так вот файл который указан по умолчанию test.php отображается полностью без вопросов а вот перейдя по ссылке которая тоже отображается в этом же iframe

Код:
<a href="test2.php" target="test">Страница 2</a>
То тоже самое содержимое отображается не полностью ... то есть не до конца

Как можно сделать что бы в iframe все содержимое показывало полностью от и до ?

ЗЫ Если открыть в новом окне страницу test2.php то выводится вся информация .
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 07.06.2015, 04:27   #2
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Я так понимаю решения нет
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 07.06.2015, 06:49   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я так понимаю решения нет
Есть. Выкинуть фрейм, поставить div и запрашивать данные через AJAX.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2015, 12:16   #4
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Есть. Выкинуть фрейм, поставить div и запрашивать данные через AJAX.
Спасибо за ответ буду пробовать
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 07.06.2015, 20:57   #5
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Есть. Выкинуть фрейм, поставить div и запрашивать данные через AJAX.
Попробовал и не чего из этого хорошего не получилось (((

вот то что я поставил к себе

Код:

<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; Charset=UTF-8">  
<script>  
    function showContent(link) {  
  
        var cont = document.getElementById('contentBody');  
        var loading = document.getElementById('loading');  
  
        cont.innerHTML = loading.innerHTML;  
  
        var http = createRequestObject();  
        if( http )   
        {  
            http.open('get', link);  
            http.onreadystatechange = function ()   
            {  
                if(http.readyState == 4)   
                {  
                    cont.innerHTML = http.responseText;  
                }  
            }  
            http.send(null);      
        }  
        else   
        {  
            document.location = link;  
        }  
    }  
  
    // создание ajax объекта  
    function createRequestObject()   
    {  
        try { return new XMLHttpRequest() }  
        catch(e)   
        {  
            try { return new ActiveXObject('Msxml2.XMLHTTP') }  
            catch(e)   
            {  
                try { return new ActiveXObject('Microsoft.XMLHTTP') }  
                catch(e) { return null; }  
            }  
        }  
    }  
</script>  
</head>  
  
<body>  
  
    <p>Какую страницу желаете открыть?</p>  
      
    <form>  
        <a href="javascript://" onclick="showContent('page1.html')">Страница 1</a>  
        <a href="javascript://" onclick="showContent('page2.html')">Страница 2</a>  
    </form>  
      
    <div id="contentBody">  
    </div>  
  
    <div id="loading" style="display: none">  
    Идет загрузка...  
    </div>  
      
</body>  
</html>
И вот что получилось ... я переделал все ссылки и когда через админку пытался добавить статью она просто напросто не добавляется в базу данных а меня перекидывает на главную страницу ... есть еще варианты как мне отобразить все содержимое ?
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 07.06.2015, 21:23   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну F12 в помощь, смотрите консоль, запросы, отладчик JS.

Кстати, все эти ActiveXObject не нужны если не нужно поддерживать IE 5-7.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.06.2015, 21:41   #7
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Всем спасибо за помощь ... все же поиск рулить ... не даром убил время на поиск решения этой проблемы ... правда не тестил в других браузерах кроме как в ff но решение вот какое

Код:
<html>
<head>
<script type="text/javascript">
function sizeFrame(frame) {
  if(frame.contentDocument) {
    frame.height = frame.contentDocument.documentElement.scrollHeight;
  } else {
    frame.height = frame.contentWindow.document.body.scrollHeight;
  }
}
</script>
</head>
<body>
<iframe width="100%" id="myframe" src="/frame.html" scrolling="no" frameborder="1" onload="sizeFrame(this)"></iframe>
</body>
</html>
Если кому надо юзайте мне не жалко =)
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 08.06.2015, 22:00   #8
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Возник еще один вопрос

Есть iframe я о нем писал выше ... как можно вывести на экран url старницы которая открыта в данный момент ?

В этом фрейме у меня открываются все ссылки из меню и мне надо вывести адреса на экран а как не знаю (

нашел вот такой вариант но мне не подходит из за алерта и то что надо все время на ссылку нажимать что бы адрес получить текущей страницы

Код:
<a href="javascript:alert(window.frames.myframe.location.href)">показать текущий адрес iframe’а</a>
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 14.06.2015, 19:11   #9
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 369
По умолчанию

Может кто помочь мне решить вой вопрос ... Повторю его еще раз :

Есть меню все ссылки этого меню открываются в одном iframe ...
Подскажите как можно вывести ссылку текущей страницы в iframe ... вывод нужно сделать не алертом а что бы оно высвечивалось в определенном месте на сайте и при переходе по ссылкам меню что бы url менялся ?
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 03.07.2015, 01:17   #10
Denis_1323
Новичок
Джуниор
 
Регистрация: 02.07.2015
Сообщений: 2
По умолчанию с помощью твоего решения можно заблокировать Scroll?

Нужно выполнить задачу именно через iframe
Denis_1323 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
iframe der90 JavaScript, Ajax 0 29.05.2014 17:44
iframe 9i. HTML и CSS 1 05.10.2012 02:16
Iframe vital4u4ok JavaScript, Ajax 5 30.10.2010 18:39
Распечатать iframe AlexDn HTML и CSS 1 04.04.2010 13:30
должен подгрузиться скрипт который бы создал и вставил в этот див <iframe></iframe> Beni JavaScript, Ajax 1 05.08.2009 14:30