2017-11-24 4 views
0

Hallo Ich bin eine Anzahl von iframes zu meiner Seite hinzufügen. Iframes enthalten nur einen Wert, und ich möchte es vom Elternteil erhalten. Ich habe viele der hier geposteten Antworten auf den Stack-Overflow ausprobiert, aber keiner von ihnen funktioniert für mich. Unten habe ich das Bild angehängt, damit Sie sehen können, wie der Iframe in der Seite enthalten ist. Ich möchte den Wert im roten Rahmen bekommen, damit ich ihn später verwenden kann.Holen Sie sich InnerText von Iframe von Eltern

enter image description here

Der Code:

var graphUrls = tmpSource.getGetFeatureInfoUrl(
    graphCoor, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'}); 
    var frr = document.createElement("iframe"); 
    frr.onload = function(){ 
    var jjj = $("iframe body a").text() 
    var kkk = $("iframe body #ras-val").text() 
    console.log("jjj ", jjj) 
    console.log("kkk ", kkk) 
    }; 
    frr.id = sourceParams.year + "-" + sourceParams.month + "-" + sourceParams.day;   
    frr.src = graphUrls 
    document.body.appendChild(frr); 
+0

haben Sie versucht mit jQuery? $ ("iframe body a"). text()? – Kathara

+0

oder $ ("iframe body # ras-val"). Text()? – Kathara

+0

Hey, Ihre Lösung gibt nur eine leere Zeichenfolge zurück. Ich habe auch versucht $ ("#" + String (frames [i] .id)). Contents(). Find ("a"). Dies gibt ein Objekt zurück, das innerText-Wert irgendwo tief unten gespeichert hat, aber nur in Edge, in Chrome ist diese Zeichenfolge auch leer? Ist es möglich, dass meine iframes noch nicht geladen sind, wenn ich versuche, auf den Wert zuzugreifen? Warum dann anderes Verhalten in verschiedenen Browsern? Wie würde ich warten, bis iframe geladen ist, wenn dies der Fall ist? –

Antwort

2

Wenn die zurück url aus der gleichen Domäne wie Ihr Hauptdokument ist, und nur in diesem Fall
dann können Sie die contentDocument von geben Ihr iframe als zweiter Parameter von $(selector, context).

// frame is you iframeElement 
$('#ras-val', frame.contentDocument).text() 

As a fiddle seit Rahmen StackSnippet die null origined uns Innenrahmen ...

Hinweis für den Zugriff nicht zulassen, dass der Wähler zu diesem Kontext dann relativ sein, so werden Sie nicht Pass "iframe body a" aber nur "body a".

Und falls die URL nicht von derselben Domäne stammt, darf Ihr Front-End-Code aus Sicherheitsgründen nicht auf dieses Dokument zugreifen.

+0

Schön, das klappt und ich bekomme eigentlich alles was drin ist als iframe als string. Noch eine Sache: Was wäre, wenn ich auf den Wert von var rasVal zugreifen möchte, der in iframes-Skript enthalten ist? Wie würde ich das tun? Danke für Ihre Hilfe! –

+1

@ Alešinar Wenn diese Variable im globalen Gültigkeitsbereich deklariert wurde, wird sie an das Window-Objekt angehängt, das Sie mit 'frame.contentWindow' abrufen können. Wenn es in einer Bereichsfunktion definiert wurde, kann es nicht abgerufen werden. – Kaiido