JS Cross-Domain-XML – mit AS URLLoader

JS Cross-Domain-XML – mit AS URLLoader
Kürzlich erhielt ich eine Anforderung für eine Funktionserweiterung. Die in der neuen Anforderung referenzierte Datenschnittstelle kann jedoch nur im XML-Format bereitgestellt werden. Leider sind meine eigenen Fähigkeiten begrenzt und mir fiel keine ideale Lösung in JS ein. Ich musste die Hilfe von AS-Ingenieuren in Anspruch nehmen. Nach fast 2 Tagen gemeinsamer Fehlerbehebung habe ich endlich den domänenübergreifenden Zugriff unter verschiedenen Browsern gelöst.
Der Code der Demoversion ist unten aufgeführt:
HTML der übergeordneten Seite:

Code kopieren
Der Code lautet wie folgt:

<iframe id="hiddenIframe" style="Breite:0px; Höhe:0px0; Rahmen:0px keine; *Breite:1px; *Höhe:0px; Überlauf:versteckt;"></iframe>
<button value="Daten abrufen" onclick="getData()"></button>
<!-- Warum nicht direkt display:none; oder visibility: hidden; verwenden? [Später erklären: Tag] -->

JS der übergeordneten Seite:

Code kopieren
Der Code lautet wie folgt:

Dokument.Domäne = "xxx.com";
Funktion getData(Daten) {
wenn (Daten == "" || Daten == undefiniert || Daten == null) {
sendData("a=1&b=2"); //Das Parameterformat ist beliebig und entspricht den Parametern, die Sie bei einer Get-Anfrage senden.
}
anders {
alert("Erfasste Daten: " + Daten)
} }
Funktion sendData(param) {
var childWindow = document.getElementById('testIframe').contentWindow;
childWindow.sendData(param); // Antriebsfunktion, Antriebsmethode in der verborgenen Domäne, um die API-Methode in AS aufzurufen und XML zu erhalten
}
Funktion ändern() {
document.getElementById("testIframe").src = "xx.html"; //Versteckte Domänen-URL
}

Unterseiten-JS:

Code kopieren
Der Code lautet wie folgt:

Dokument.Domäne = "xxx.com";
Funktion sendData(paramFromParent) {
var serverUrl = "xxx.com";
//Hier wird paramFromParent verarbeitet, um die vollständige URL von xxx.xml zu erhalten.
//Dann rufen Sie die URLLoader-Methode von AS auf, um die Daten unter der URL abzurufen
// Rufen Sie nach erfolgreicher Erfassung die folgende Methode auf, um die Methode getData auf der übergeordneten Seite anzusteuern
}
Funktion getData(backData) {
window.parent.getData(zurückDaten);
}

Tag: Der Grund, warum Anzeige oder Sichtbarkeit nicht verwendet wird, liegt darin, dass im IE-Browser, wenn Ihr Iframe-Element als diese beiden Punkte formatiert ist, das JS im Frame nicht geladen wird und keine Kommunikation durchgeführt werden kann ...
Zum besseren Verständnis: Das Bild oben spricht für sich selbst

Programmablauf:
1. Laden Sie JS und deklarieren Sie die Methoden sendData und getData unter dem übergeordneten Seitenfenster
2. Iframe laden
3. Führen Sie den AS-Code im Iframe aus
4. AS-domänenübergreifendes Analysieren und Verarbeiten von XML-Dateien
5. Rufen Sie window.parent.getData auf, um das JS der übergeordneten Seite zu steuern und die analysierten Daten zu übergeben

<<:  Zusammenfassung der Stiländerungen des Eingabefelds vom Typ „file“

>>:  CSS löst das Fehlausrichtungsproblem von Inline-Blöcken

Artikel empfehlen

So richten Sie ein Bereitstellungsprojekt unter einem Linux-System ein

1. Ändern Sie die Firewall-Einstellungen und öffn...

Detaillierte Erklärung von Prototypen und Prototypenketten in JavaScript

Inhaltsverzeichnis Prototyp-Kettendiagramm Grundl...

ElementUI implementiert kaskadierenden Selektor

In diesem Artikelbeispiel wird der spezifische Co...

Ein Leitfaden zur Optimierung leistungsstarker Websites

Goldene Regeln der Leistung: Nur 10 bis 20 % der ...

Das WeChat-Applet realisiert den Neun-Quadrat-Rastereffekt

In diesem Artikel wird der spezifische Code für d...

Beispiel für die Konvertierung eines Zeitstempels in ein Datum in MySQL

Vorwort Ich bin bei der Arbeit auf folgende Situa...

Warum MySQL die Verwendung von Unterabfragen und Verknüpfungen nicht empfiehlt

So führen Sie eine paginierte Abfrage durch: 1. F...

So verbinden Sie JDBC mit MySQL 5.7

1. Bereiten Sie zunächst die MySQL- und Eclipse-U...

Regenbogen-Button-Stil erstellt mit CSS3

Ergebnis: Implementierungscode: html <div Klas...

Designideen für MySQL-Backup und -Wiederherstellung

Hintergrund Lassen Sie mich zunächst den Hintergr...

Mehrere Möglichkeiten zum Generieren eindeutiger IDs in JavaScript

Mögliche Lösungen 1. Math.random generiert Zufall...