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.
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).
Wie bei AngularJS 1.2 sollten Sie den Dienst $sce
verwenden:
Viel Glück ...
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%Tags und Links javascript angularjs iframe