Auswählen eines Elements in iFrame jQuery


122

In unserer Anwendung analysieren wir eine Webseite und laden sie auf eine andere Seite in einem iFrame. Alle Elemente auf dieser geladenen Seite haben ihre Tokenid-s. Ich muss die Elemente nach diesen Tokenid-s auswählen. Mittel - Ich klicke auf ein Element auf der Hauptseite und wähle das entsprechende Element auf der Seite im iFrame aus. Mit Hilfe von jQuery mache ich das folgendermaßen:

function selectElement(token) {
     $('[tokenid=' + token + ']').addClass('border'); 
}

Mit dieser Funktion kann ich jedoch nur die Elemente auf der aktuellen Seite auswählen, nicht im iFrame. Kann mir jemand sagen, wie ich die Elemente im geladenen iFrame auswählen kann?

Vielen Dank.

Antworten:


157
var iframe = $('iframe'); // or some other selector to get the iframe
$('[tokenid=' + token + ']', iframe.contents()).addClass('border');

Beachten Sie auch, dass srcSie aus Sicherheitsgründen nicht auf den Inhalt dieses Iframes in Javascript zugreifen können , wenn dieser Iframe auf eine andere Domäne verweist.


8
Beachten Sie, dass $ ('iframe') den iframe nicht direkt zurückgibt. Sie müssen es aus dem Array ziehen.
McKayla

Vielen Dank für die Hilfsbereitschaft. Das scheint aber nicht zu funktionieren.
Cycero

3
@cycero, es sollte funktionieren. Generieren Sie diesen Iframe dynamisch? Vergessen Sie nicht, dass Sie aus Sicherheitsgründen nicht auf den Inhalt zugreifen können, wenn Sie das src-Element dieses Iframes auf eine andere Domain als Ihre verweisen.
Darin Dimitrov

Ich lade es nicht aus einer anderen Domain, sondern aus demselben Ordner. Der iFrame-Inhalt wird dynamisch generiert und als Datei auf dem Server gespeichert. Dann wird diese Datei in iFrame geladen.
Cycero

@cycero, ich habe meine Antwort aktualisiert. Versuchen Sie zu besteheniframe.contents()
Darin Dimitrov

52

Schauen Sie sich diesen Beitrag an: http://praveenbattula.blogspot.com/2009/09/access-iframe-content-using-jquery.html

$("#iframeID").contents().find("[tokenid=" + token + "]").html();

Platzieren Sie Ihren Selektor in der Suchmethode.

Dies ist jedoch möglicherweise nicht möglich, wenn der Iframe nicht von Ihrem Server stammt. Andere Beiträge sprechen von Fehlern, denen die Berechtigung verweigert wurde.

jQuery / JavaScript: Zugriff auf den Inhalt eines Iframes


Das funktioniert, um den HTML-Code des Elements abzurufen. Wie kann ich dem ausgewählten Element jedoch eine CSS-Klasse hinzufügen? $ ("# iframeDiv"). content (). find ("[tokenid =" + token + "]"). addClass ("border"); scheint nicht zu funktionieren.
Cycero

1
Erhalten Sie Fehler, denen die Berechtigung verweigert wurde? Können Sie mir das HTML des Iframes geben?
Kevin Bowersox

Nein, keine Erlaubnis verweigert Probleme.
Cycero

20

Wenn Ihr Dokument fertig ist, bedeutet dies nicht, dass auch Ihr Iframe bereit ist.
Sie sollten also das Ereignis zum Laden des Iframes abhören und dann auf Ihre Inhalte zugreifen:

$(function() {
    $("#my-iframe").bind("load",function(){
        $(this).contents().find("[tokenid=" + token + "]").html();
    });
});

-3

Wenn der Fall über die Konsole auf den IFrame zugreift, z. B. Chrome Dev Tools, können Sie einfach den Kontext der DOM-Anforderungen per Dropdown-Liste auswählen (siehe Abbildung).

Chrome Dev Tools - Auswahl des iFrame


-9

Hier ist eine einfache JQuery, um dies zu tun, damit div nur in Containern ziehbar ist:

$("#containerdiv div").draggable( {containment: "#containerdiv ", scroll: false} );
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.