0 wird erhalten, wenn versucht wird, den oberen Offset-Wert von Element onload zu erhalten

9

Ich arbeite an dem Projekt mit mehr als einem iframes. Der Haupt-iframe hat die Seite und die Seite enthält untergeordnete iframes, die auch Seiteninhalte haben.

Innerhalb des Child iframes habe ich die Registerkarten, jede Registerkarte hat den Seiteninhalt, der dynamisch vom Server geladen wird.

Ich versuche, den oberen Versatzwert eines div-Elements mit offset () zu erhalten. top von oben nach oben, wenn die Seite geladen wird. Es gibt einen Wert zurück, wenn der untergeordnete Iframe mit 'Iframe neu laden' erneut geladen wird, aber beim erneuten Laden der Seite wird '0' zurückgegeben.

Ich füge hiermit das Bild an, was ich versuche zu tun, bitte überprüfen Sie, ob ich mein oben beschriebenes Problem nicht klar erklärt habe.

Ich habe diesen Code ausprobiert und diesen Code in $ (document) .ready () {} eingefügt. Er funktioniert gut, wenn ich den bestimmten Iframe neu lade. Aber gibt 0 beim Laden zurück.

%Vor%

Kann mir bitte jemand helfen, herauszufinden, warum offset (). top beim Laden der Seite 0 zurückgibt?

    
KickyTrick 09.01.2018, 08:01
quelle

2 Antworten

3

Verwenden Sie .contents (), um zum iFrame-DOM zu gelangen.

Heres und Beispiel für einen Code, den ich vorher benutzt habe:

%Vor%

Sie können es wahrscheinlich neu schreiben, um das div-Element und den Offset davon zu erhalten.

    
mrdeadsven 09.01.2018 08:52
quelle
0

Ich hoffe, du versuchst nicht, Informationen von einem iFrame zu bekommen. Weil iFrames normalerweise nicht für etwas anderes als das Anzeigen von iFrames ausgelegt sind. Das bedeutet keine Bearbeitung und kein Ergreifen von Informationen. Also, soweit ich weiß, gibt es keine Möglichkeit, Informationen aus einem iFrame mit JS zu entnehmen.

Warum können Sie den oberen Versatz des iFrames, den Sie haben könnten, nicht lesen? Dann hat das wahrscheinlich mit dem Timing zu tun. Einige Probleme können gelöst werden, wenn Sie $(document).ready() in Verbindung mit setTimeout() wählen und in vielen Fällen sogar 0 ms ausreichend sind. Da es keinen Code zu sehen gibt, ist es wirklich schwierig zu sagen, was das Problem sein könnte.

    
Vadim Cool 09.01.2018 08:34
quelle

Tags und Links