Dies ist meine erste Frage zu Stack Overflow. Es ist nicht das erste Mal, dass ich eines schreiben wollte, aber normalerweise finde ich eine Lösung mit der Suchleiste, diesmal nicht. Das Problem, mit dem ich mich beschäftige, ist ein bisschen komplex, also werde ich versuchen, so gründlich wie möglich zu sein.AS3 Flash - Rendern von HTML über ExternalInterface
Grundsätzlich fügen wir chinesischen Zahlungen zu einem bereits bestehenden E-Commerce in Flash hinzu. Die gesamte Website ist in AS3, eingebettet mit SWFObject, bereits mit ExternalInterface für andere Dinge.
Diese neue chinesische Zahlungsmethode ist ein bisschen altmodisch, so dass sie eine seltsame Art der Abwicklung von Zahlungen haben. Sobald wir einen POST an ihre Server mit allen Bestelldetails gesendet haben, antworten sie mit einer HTML-Seite. Mein Problem ist das Rendern dieser Seite, wenn man bedenkt, dass ich sie in Flash erhalte.
Die Lösung, die ich gerade versuche, funktioniert teilweise, was bedeutet, dass ich die Seite sehen kann, aber die chinesischen Zeichen, die auf der Seite sein sollen, werden schlecht wiedergegeben. Anstelle der chinesischen Zeichen sehe ich seltsame Zeichen, daher vermute ich, dass es ein Codierungsproblem geben muss, wenn ich den HTML-Code von Flash an Javascript übergebe. Dies ist, wie ich es so mache:
AS3:
//extract html page from response
var newHTML:String = e.currentTarget.data;
//trim whitespace to avoid javascript error
newHTML = newHTML.replace(/\n/g, '');
newHTML = newHTML.split("\r").join("");
if(ExternalInterface.available)
ExternalInterface.call("chinesePayment('"+newHTML+"')");
else
trace("External interface error");
Javascript:
function chinesePayment(param) {
var newWindow = window.open();
//var unescaped = unescape(param);
newWindow.document.write(param);
}
Ich habe versucht, über mit unescape Messing, Flucht, URIEncoding aber ohne Erfolg, so dass ich Ich hoffe wirklich, dass du mir hier helfen kannst!
Danke, Domenico
EDIT:
Ich möchte nur erwähnen möchte, dass ich eine richtige HTML-Seite von ihren Servern bin zu empfangen. Ich habe versucht, die Seite lokal zu speichern, den HTML-Code direkt aus der Serverantwort und die Seitenansichten korrekt zu kopieren. Das bedeutet, dass beim Übergeben der Seite von AS3 an Javascript etwas falsch sein muss.
EDIT2 wichtig:
Ich habe erkannt, dass das Problem in der Popup-Codierung legt. Wenn ich den HTML-Code aus dem Popup kopiere, ihn in einen Editor einfüge und ihn speichere, kann ich den HTML-Code korrekt anzeigen. Scheint so, als würde das Popup die gbk-Codierung nicht berücksichtigen. Ich suche jetzt nach einer Lösung für dieses Problem.
Wenn Sie diese Daten über say FileReference ausgeben, dann öffnen Sie es als HTML, funktioniert es im Browser ordnungsgemäß? – Vesper
Ich habe das nicht versucht, auch weil dies keine endgültige Lösung sein kann. Da diese Website viele Aufträge erhält, möchte ich vermeiden, für jede Bestellung statische Seiten zu erstellen. Jedenfalls habe ich versucht, einen Breakpoint im Flash einzufügen, den HTML-Code zu kopieren und in den Editor einzufügen. Sobald ich diese Datei gespeichert habe, wurde sie korrekt gerendert, daher ist der HTML-Code bis dahin gut. Ich werde diese Lösung versuchen, nur um zu sehen, ob es funktioniert, und dann lassen Sie es wissen, wie es geht. – aberonni
Nein, ich möchte testen, ob Sie eine korrekte HTML-Seite erhalten und ob alle Metadaten richtig eingestellt sind. Wenn es im Browser richtig formatiert wird, wenn es über eine Datei übertragen wird, dann erhalten Sie einen korrekten HTML-Code und Sie müssen sich in JS mit HTML-Strings weiter einarbeiten - ich weiß nicht, ob etwas im Prozess fehlschlagen kann. Wenn nicht, dann erhalten Sie entweder einen falschen/unvollständigen HTML-Code oder Sie haben keine Schriftarten auf Ihrem System oder es gibt eine andere nicht programmierende Ursache für das von Ihnen beobachtete Verhalten. – Vesper