jQuery/JavaScript: prístup k obsahu iframe

Chcel by som manipulovať s HTML vo vnútri iframe pomocou jQuery.

Myslel som si, že to dokážem tak, že nastavím kontext funkcie jQuery na dokument iframe, niečo ako:

$(function(){ //document ready
    $('some selector', frames['nameOfMyIframe'].document).doStuff()
});

Zdá sa však, že to nefunguje. Trochu kontroly mi ukázalo, že premenné v frames['nameOfMyIframe']nedefinované, pokiaľ chvíľu nepočkám, kým sa načíta iframe. Keď sa však iframe načíta, premenné nie sú prístupné (dostávam chyby typu permission denied).

Vie niekto o nejakom spôsobe, ako to vyriešiť?

Riešenie

Myslím, že to, čo robíte, podlieha politike rovnakého pôvodu. To by mal byť dôvod, prečo dostávate chyby typu odmietnutie povolenia.

Komentáre (6)

Musíte pripojiť udalosť k obsluhe iframe's onload a vykonať v nej js, aby ste sa uistili, že iframe dokončil načítanie pred prístupom k nemu.

$().ready(function () {
    $("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
        $('some selector', frames['nameOfMyIframe'].document).doStuff();
    });
};

Vyššie uvedené vyrieši problém 'ešte nenačítaného', ale čo sa týka oprávnení, ak v iframe načítate stránku, ktorá je z inej domény, nebudete k nej môcť pristupovať kvôli bezpečnostným obmedzeniam.

Komentáre (6)

Skúšali ste klasický spôsob, keď ste čakali na dokončenie načítania pomocou zabudovanej funkcie ready v jQuery?

$(document).ready(function() {
    $('some selector', frames['nameOfMyIframe'].document).doStuff()
} );

K

Komentáre (1)