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

Vue implementiert eine einfache Timer-Komponente

Bei der Durchführung eines Projekts stößt man unw...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.24

In diesem Artikel finden Sie das Installations- u...

Zusammenfassung der Methoden zum Abfragen von MySQL-Benutzerberechtigungen

Einführung von zwei Methoden zum Anzeigen von MyS...

Analyse des Uniapp-Einsteiger-NVUE-Klettergrubenrekords

Inhaltsverzeichnis Vorwort Hallo Welt Bild Rahmen...

Ein kurzes Verständnis der drei Prinzipien zum Hinzufügen von MySQL-Indizes

1. Die Bedeutung von Indizes Indizes werden verwe...

Docker-Installations- und Konfigurationsschritte für MySQL

Inhaltsverzeichnis Vorwort Umfeld Installieren Er...

Standards zum Schreiben von Codekommentaren bei der Webseitenerstellung

<br />Ich habe die in meiner Arbeit verwende...

Ausführliches Tutorial zur Installation von MySql 5.6.35 winx64

Hinweis: Beim Projektstart ist kein Fehler aufgru...

Detaillierte Erläuterung der ECharts-Mausereignisverarbeitungsmethode

Ein Ereignis ist eine vom Benutzer oder dem Brows...

So implementieren Sie eine MySQL-Master-Slave-Replikation basierend auf Docker

Vorwort Die MySQL Master-Slave-Replikation ist di...