Verwendung von iFrames in AngularJS

8

Mit Angular 1.2+ versuche ich einen "eckigen" Weg zu finden, um einen iFrame zu laden, aber ich kann nirgendwo Tutorials / irgendwelche Diskussionen finden.

Grundsätzlich habe ich eine Suchseite, die eine Liste von Links anzeigt. Ein Klick auf einen Link sollte eine Funktion in meinem Controller aufrufen, die Daten (möglicherweise über den $ http-Dienst?) In einen iFrame lädt, während die Suchergebnisse im Blick behalten werden.

Hier ist ein rudimentärer Code (ich habe nie iFrames vor so einer Entschuldigung benutzt, wenn das einfach total falsch ist)

Anzeigen

%Vor%

Controller

%Vor%

Dieser Code gibt derzeit den Fehler:

%Vor%

Etwas Einfaches in dieser Richtung wäre ideal. In dem (versuchten) Beispiel oben würden die Suchergebnisse auf dem Bildschirm bleiben und in eine Seitenleiste verschoben werden, während der iFrame auf einer externen Site (in einer anderen Domäne) in den Hauptteil der Seite geladen wird.

Wie kann dies mit Angular erreicht werden?

Zusätzliche Einschränkung: Die Links, die in den iFrame geladen werden, sind Affiliate-Links, so dass sie oft eine "Zwischenhändler" -Domäne zwischen sich haben, z. Der angeklickte Link wird mydomain.com/cloakinglink sein, der zu www.zanox.com/whatever weiterleitet, was dann zum endgültigen Ort, www.asos.com/whatever , führt.

    
Jascination 07.11.2013, 05:39
quelle

4 Antworten

6

Aufgrund der Richtlinie für gleiche Herkunft können Sie keine domänenübergreifenden Daten mithilfe von XMLHttpRequest abrufen.

>

Ich bin mir nicht ganz sicher, was du wirklich machen willst.

Sie könnten versuchen, iframe src attribut zu binden und link url zusammen zu setzen, um die Funktion zu erreichen, wenn Sie nur möchten, dass iframe die Webseite anzeigt, auf die der Benutzer geklickt hat.

Ich habe ein einfaches Beispiel geschrieben:

HTML

%Vor%

JS

%Vor%

Hier ist die jsFiddle-Demo

BTW ... Sie könnten versuchen, Server-Proxy, wenn Sie wirklich XMLHttpRequest verwenden möchten, um Daten von 3-Party-Website zu greifen und es irgendwo ablegen (Sie können nicht Daten zu iframe src Attribut dumpen! Es akzeptiert nur die URL der Webseite).

    
Chickenrice 07.11.2013, 07:24
quelle
14

Wie bei AngularJS 1.2 sollten Sie den Dienst $sce verwenden:

%Vor%

Viel Glück ...

    
TidharPeer 27.10.2014 13:06
quelle
3

Wirklich Schwierigkeiten, nur mit regulären Dom zu st iframe.src. Grr ... Eckig beugt das Licht auf sie zu.

%Vor%

Vorlage:

%Vor%     
httpete 03.12.2014 16:51
quelle
3

Ich denke, dass noch mehr Klarheit benötigt wird, zusammen mit einem anderen Beispiel.

$ sce ist ein Service, den Sie injizieren müssen. Der Grund dafür, dass es nicht automatisch einbezogen wird, ist der Overhead der Leistung, Sie wollen sicher nur die benötigten Dienste laden können.

$ sce.trustasResourceURL ist also wichtig

Beispiel:

%Vor%

Dann der IFrame:

%Vor%     
Tom Stickel 19.08.2015 17:41
quelle

Tags und Links