Questa è la mia prima domanda su Stack Overflow. Non è la prima volta che ho voluto scriverne uno, ma di solito trovo una soluzione usando la barra di ricerca, questa volta non l'ho fatto. Il problema che sto affrontando è un po 'complesso quindi cercherò di essere il più accurato possibile.AS3 Flash - rendering html tramite ExternalInterface
Fondamentalmente stiamo aggiungendo pagamenti cinesi a un e-commerce già esistente in Flash. L'intero sito Web è in AS3, incorporato tramite SWFObject, che già utilizza ExternalInterface per altre cose.
Questo nuovo metodo di pagamento cinese è un po 'vecchio stile, quindi hanno uno strano modo di gestire i pagamenti. Una volta inviato un POST ai loro server con tutti i dettagli dell'ordine, rispondono con una pagina HTML. Il mio problema è il rendering di questa pagina, considerando che la ricevo all'interno di Flash.
La soluzione che sto provando in questo momento funziona parzialmente, il che significa che sono in grado di vedere la pagina, ma i caratteri cinesi che dovrebbero essere nella pagina non vengono visualizzati correttamente. Invece dei caratteri cinesi vedo strani personaggi, quindi suppongo che debba esserci un problema di codifica quando passo l'HTML da Flash a Javascript. Questo è come lo sto facendo:
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);
}
ho provato pasticciare con unescape, fuga, URIEncoding ma senza alcun successo, così ho spero davvero che tu possa aiutarmi qui!
Grazie, Domenico
EDIT:
Vorrei solo ricordare che sto ricevendo una pagina HTML corretto dai loro server. Ho provato a salvare la pagina localmente, copiando il codice HTML direttamente dalla risposta del server e le visualizzazioni di pagina correttamente. Ciò significa che ci deve essere qualcosa di sbagliato nel processo di passaggio della pagina da AS3 a Javascript.
EDIT2 importante:!
mi sono reso conto che il problema risiede nella codifica a comparsa. Quando copio l'HTML dal popup, lo incollo in un editor e lo salvo posso visualizzare correttamente l'HTML. Sembra che il popup non consideri la codifica gbk. Sto cercando una soluzione a questo problema.
Se si esegue il dump di tali dati tramite dire FileReference, quindi aprirlo come HTML, funziona correttamente nel browser? – Vesper
Non l'ho provato, anche perché questa non può essere una soluzione finale. Visto che questo sito riceve molti ordini, vorrei evitare di creare pagine statiche per ogni ordine. In ogni caso, ho provato a inserire un punto di interruzione in flash, copiare l'html e incollarlo in editore. Una volta salvato il file, il rendering era corretto, quindi l'html va bene fino a lì. Proverò questa soluzione solo per vedere se funziona, quindi ti faccio sapere come va. – aberonni
No, intendo per testare se si riceve una pagina HTML corretta e se ha tutti i metadati impostati correttamente e altre cose. Se si formerà correttamente nel browser se trasferito via file, allora si riceverà un codice HTML corretto e sarà necessario scavare in JS per gestire ulteriormente le stringhe HTML - Non ho conoscenza se qualcosa può funzionare male nel processo. In caso contrario, riceverai un codice HTML errato/incompleto o mancherai di caratteri sul tuo sistema, oppure ci sono altre cause non di programmazione del comportamento che osservi. – Vesper