• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Operowanie na załadowanych stronach wewnątrz głównej strony / iframe

VPS Starter Arubacloud
0 głosów
204 wizyt
pytanie zadane 25 października 2018 w JavaScript przez fullje Nowicjusz (170 p.)

Witam,

Z góry przepraszam za brak ścisłości w pytaniu, aczkolwiek raczkuję w js i napotkałem problem (pewnie dlatego, że do końca nie wiem jak go opisać ;))

Chodzi o to, że mam sobie index.html, w którym jest tag iframe:

<div class="main-article">
    <iframe id="mainContent">
                    
    </iframe>               
</div>

Oraz zdefiniowane mam menu: 

<div class="left-menu">
                <ul>
                    <li><a href="#" onclick="loadPage('main')">Main</a></li>
                    <li><a href="#" onclick="loadPage('hire')">Hire</a></li>
                    <li><a href="#" onclick="loadPage('history')">History</a></li>
                    <li><a href="#" onclick="loadPage('announcement')">Announcement</a></li>
                    <button id="add">+</button>
                    <button id="remove">-</button>
                </ul>
            </div>

Obsługiwane przez skrypt w JS:

function loadPage(name)
{
    this.site = name;
    document.getElementById("mainContent").src = this.site + ".html";
}

Wszystko fajnie. Wszystko się wyświetla w odpowiednim iframe na stronie - git. Problem pojawia się gdy chciałbym się odwołać do np tagu, który jest w pliku, który został załadowany. Powiedzmy, że klikam w menu na history i ładuje się do iframe - history.html, który wygląda tak (dodam, że jest to CAŁY plik html, nie ma tam nic poza tym co tutaj się pokaże):

<div id="history-page" class="main-article">
    Here is HISTORY file
</div>

I, gdy chcę się odwołać do "history-page" poprzez: 

function colorDiv()
{
    alert("Test");
}

var test = document.getElementById("history-page");
test.onmouseover = colorDiv;

oraz wypisać chociaż alert no to niestety nie działa ;) Wiem zapewne, że jest to jakaś bzdeta, gdzie coś omijam ale niestety póki co zapytam się was o podpowiedź. Jeśli by się dało, chciałbym by używać js bez jquery bądź innych. Na to też przyjdzie czas. Powinienem jakoś przeładować skrypt by ten widział tag w iframe?

komentarz 25 października 2018 przez ScriptyChris Mędrzec (190,190 p.)

Skąd próbujesz dostać się do #history-page? Z wewnątrz iframe, czy z zewnątrz?

komentarz 25 października 2018 przez fullje Nowicjusz (170 p.)

Jeśli dobrze rozumiem Twoje pytanie, to z zewnątrz. Po prostu mam zmienną, która przechowuje: 

document.getElementById("history-page");

Według mnie, by działało to co napisałem, powinienem jakoś przeładować skrypt by ten wiedział, że coś się na stronie zmieniło, ale nie jestem pewny czy dobrze kombinuję ;)

Dodam (o ile nie widać tego z kontekstu), że zawartość podmienia się bez przeładowania strony.

1 odpowiedź

0 głosów
odpowiedź 25 października 2018 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 25 października 2018 przez fullje
 
Najlepsza

Jeśli chcesz się dostać do DOMu iframe'a (którego adres znajduje się w tej samej domenie) z zewnątrz, to możesz złapać go i odwołać się do property contentDocument. Jeśli iframe jest z innej domeny, to komunikować się możesz przez postMessage.

Podobne pytania

0 głosów
1 odpowiedź 152 wizyt
pytanie zadane 13 listopada 2015 w JavaScript przez jegor377 Stary wyjadacz (13,230 p.)
0 głosów
0 odpowiedzi 95 wizyt
pytanie zadane 2 września 2020 w Inne języki przez Greeenone Pasjonat (16,100 p.)
0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 23 marca 2016 w C i C++ przez jegor377 Stary wyjadacz (13,230 p.)

92,830 zapytań

141,771 odpowiedzi

320,817 komentarzy

62,159 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...