Đây là câu hỏi đầu tiên của tôi về Stack Overflow. Đây không phải là lần đầu tiên tôi muốn viết một, nhưng thường tôi tìm thấy một giải pháp bằng cách sử dụng thanh tìm kiếm, lần này thì không. Vấn đề tôi giải quyết là một chút phức tạp vì vậy tôi sẽ cố gắng và kỹ lưỡng như possibile.AS3 Flash - hiển thị html qua ExternalInterface
Về cơ bản, chúng tôi đang thêm các khoản thanh toán của Trung Quốc vào một thương mại điện tử đã có sẵn trong Flash. Toàn bộ trang web nằm trong AS3, được nhúng bằng SWFObject, đã sử dụng ExternalInterface cho những thứ khác.
Phương thức thanh toán mới của Trung Quốc này hơi lỗi thời, vì vậy họ có cách xử lý thanh toán lạ. Khi chúng tôi đã gửi POST tới máy chủ của họ với tất cả các chi tiết đơn đặt hàng, họ sẽ phản hồi bằng một trang HTML. Vấn đề của tôi là hiển thị trang này, xem xét rằng tôi nhận được nó bên trong Flash.
Giải pháp tôi đang cố gắng tại thời điểm này hoạt động một phần, có nghĩa là tôi có thể xem trang, nhưng các ký tự Trung Quốc được cho là nằm trong trang đang hiển thị xấu. Thay vì các ký tự Trung Quốc, tôi thấy các ký tự lạ, vì vậy tôi đoán có phải là một vấn đề mã hóa khi tôi chuyển HTML từ Flash sang Javascript. Đây là cách tôi đang làm nó:
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);
}
Tôi đã thử rối tung lên với unescape, trốn thoát, URIencoding nhưng không có bất kỳ thành công, vì vậy tôi thực sự hy vọng bạn có thể giúp tôi ở đây!
Cảm ơn, Domenico
EDIT:
tôi chỉ muốn đề cập đến mà tôi nhận được một trang HTML đúng từ các máy chủ của họ. Tôi đã thử lưu trang cục bộ, sao chép mã HTML trực tiếp từ phản hồi của máy chủ và lượt xem trang chính xác. Điều đó có nghĩa là phải có điều gì đó sai trong quá trình chuyển trang từ AS3 sang Javascript.
EDIT2 quan trọng:
tôi đã nhận ra rằng vấn đề đặt trong mã hóa popup. Khi tôi sao chép HTML từ cửa sổ bật lên, dán nó vào trình chỉnh sửa và lưu nó, tôi có thể xem HTML một cách chính xác. Có vẻ như cửa sổ bật lên không xem xét mã hóa gbk. Tôi đang tìm một giải pháp cho vấn đề này.
Nếu bạn đổ dữ liệu đó thông qua nói FileReference, sau đó mở nó dưới dạng HTML, nó có hoạt động đúng trong trình duyệt không? – Vesper
Tôi chưa thử điều đó, bởi vì đây không phải là giải pháp cuối cùng. Thấy như trang web này nhận được rất nhiều đơn đặt hàng tôi muốn tránh tạo các trang tĩnh cho mỗi đơn đặt hàng. Nhưng dù sao tôi đã thử chèn một điểm ngắt trong flash, sao chép html và dán vào trình chỉnh sửa. Một khi tôi lưu tập tin đó nó đã được dựng hình đúng cách, do đó html là tốt cho đến khi có. Tôi sẽ thử giải pháp này chỉ để xem nó có hoạt động hay không, sau đó cho bạn biết nó hoạt động như thế nào. – aberonni
Không, ý tôi là thử nghiệm xem bạn có nhận được trang HTML chính xác hay không và liệu nó có tất cả siêu dữ liệu được đặt chính xác hay không và các nội dung khác. Nếu nó được định dạng chính xác trong trình duyệt nếu được chuyển qua tệp, thì bạn nhận được một mã HTML chính xác và bạn cần đào sâu vào JS xử lý chuỗi HTML hơn nữa - Tôi không có kiến thức về việc liệu có trục trặc nào trong quá trình. Nếu không, sau đó bạn nhận được một HTML không chính xác/không đầy đủ, hoặc bạn thiếu phông chữ trên hệ thống của bạn, hoặc có một số nguyên nhân không lập trình khác của hành vi bạn quan sát. – Vesper