За последние 24 часа нас посетили 17152 программиста и 1652 робота. Сейчас ищут 943 программиста ...

Вывод в Iframe части контента с другой страницы

Тема в разделе "JavaScript и AJAX", создана пользователем Shenk, 19 июн 2015.

  1. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Доброго дня.

    Пытаюсь сделать вывод в Iframe части контента с другой страницы сайта.

    Id элемента известен ( DeltaPlaceHolderMain )

    Есть ли решение ? Подозреваю что надо через document.getElementById. Но как ?

    Пока обхожусь таким способом, но так я получаю только часть строк, так как не знаю заранее сколько всего сообщений.

    Код (PHP):
    1. <style type="text/css">
    2. #block1{
    3.     overflow: hidden;
    4.     width:750px;
    5.     height:175px;
    6. }
    7. </style>
    8.  
    9. <script type="text/javascript">
    10.     function f(){
    11.         document.getElementById('block1').scrollTop = 200;
    12.         document.getElementById('block1').scrollLeft = 190;
    13.        
    14.     }
    15. </script>
    16.  
    17. <body onload="f()">
    18.  
    19. <div id="block1">
    20. <iframe src="http://portal:8081/People/_layouts/15/portal/Messenger/ReceivedMessages.aspx"  width="1000" height="400" name="iframe1" scrolling="no"></iframe>
    21. </div>
    22.  
    23. </body>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Просто в поиск можно было написать: javascript iframe getElementById

    Код (PHP):
    1. document.getElementById('id iframe').contentWindow.document.getElementById('DeltaPlaceHolderMain') 
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Если нужна часть, можно использовать фишку метода jQuery.load()
    http://api.jquery.com/load/#loading-page-fragments
    И можно не усложнять дло никакими ифреймами. Грузи в любое место на странице.
     
  4. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Вот скриншот самих сообщений.
    [​IMG]

    Вот как они сейчас на главной странице
    [​IMG]

    Что-то я не понимаю как сделать вариант предложенный denis01.

    P.S Просьба сильно не бить. Не программист. Обычный админ, загруженный работой.
    P.P.S За помощь скину денюжку на телефон.

    С Уважением...

    Добавлено спустя 5 минут 46 секунд:
    На втором скриншоте заметно, что видны не все сообщения. И много пустого места, которое занимает фрейм.

    Добавлено спустя 7 минут 12 секунд:
    Код элемента, который нужно закинуть на главную

    [​IMG]
     
  5. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Я с удовольствием оставил бы и первый свой вариант.
    Но в дескворке, в элементе веб-часть для скриптов он отрабатывается по-дурному.

    Веб часть как была 250 пикселей - так и остается. Но под ней появляется еще пустое место на 150 пикселей.

    Как раз разница в высоте веб части и ифрейма (который у меня 400 пикселей).

    Помогите, пожалуйста. Я уже много чего перепробовал.

    document.getElementById('id iframe').contentWindow.document.getElementById('DeltaPlaceHolderMain') - вообще выдает просто пустое поле, чистый лист.
     
  6. Арт

    Арт Новичок

    С нами с:
    23 июн 2015
    Сообщения:
    1
    Симпатии:
    0
    Получить содержимое фрейма из js нельзя из соображений безопасности, смотрите в сторону ajax.
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    автор игнорирует мое предложение не использовать iframe, а применять jquery load, который умеет всё что требуется из коробки.
     
  8. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Ну автор пришел к такому варианту.
    Код (PHP):
    1. <div id="inf"></div>   
    2. <script type="text/javascript">   
    3. $('#inf').load('http://portal:8081/People/_layouts/15/portal/Messenger/ReceivedMessages.aspx #DeltaPlaceHolderMain');  
    4. </script>
    Все работает так, как надо. Единственно, путь по умолчанию к пиктограммам (png) изменился и они не отображаются.
    Сейчас бьюсь над этим.

    Добавлено спустя 1 минуту 1 секунду:
    Да и автор что в яваскрипт, что в Jquery - как хрю-хрю в винограде.
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    вот и славно!

    Добавлено спустя 2 минуты 14 секунд:
    в адресах используй абсолютный (начинающийся на "/") путь,это самый простой способ добиться переносимости
     
  10. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    так сделай абсолютный же ж )))
     
  12. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Мил человек, будь добрый, дай хорошего пинка в нужную сторону :)

    Добавлено спустя 30 минут 29 секунд:
    Сделал так:

    Код (PHP):
    1. <base href="http://portal:8081/People/">
    2. <div id="inf"></div>   
    3. <script type="text/javascript">   
    4. $('#inf').load('_layouts/15/portal/Messenger/ReceivedMessages.aspx #DeltaPlaceHolderMain');  
    5. </script>
    Однофигственно.

    В исходнике путь к рисунку прописан так:


    Код (PHP):
    1. <img id="ctl00_PlaceHolderMain_SentMessagesControl_MessageList1_MessagesSPGridView_ctl04_MessageTypeImage" title="Текстовое сообщение" src="../../images/portal/Messenger/MessageType_Text.png">
    2.  
    Добавлено спустя 6 минут 33 секунды:
    ИИес...сделал :)

    Решение:

    Код (PHP):
    1. <base href="http://portal:8081/People/_layouts/15/DeskWork/Messenger/">
    2. <div id="inf"></div>   
    3. <script type="text/javascript">   
    4. $('#inf').load('ReceivedMessages.aspx #DeltaPlaceHolderMain');  
    5. </script>
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    легких путей ты не ищешь, да? будешь полагаться на base — будет больно.

    локальный абсолютный путь к картинке, как я понял из примера, выглядит так:
    "/People/_layouts/15/images/portal/MessageType_Text.png".
    вот так и надо его писать в теге <img>, без анального стимулирования.
     
  14. Shenk

    Shenk Активный пользователь

    С нами с:
    17 авг 2010
    Сообщения:
    10
    Симпатии:
    0
    Фишка в чем, что где зарыт этот локальный абсолютный путь к картинке я не знаю. Перерыл всю эту лабуду, включая базу. Предполагаю, что динамически формируется.

    Этот дескворк та еще лабудень.