2014-10-02 82 views
7

Có một lỗi khi tôi sử dụng ExternalInterface như sau:"Chuỗi thoát khỏi ExternalInterface sử dụng quy ước JSON" trong trình phát flash 14 mới là gì?

Chú ý: Đối với nội dung nhắm mục tiêu Flash Player phiên bản 14 hoặc cao hơn, ExternalInterface thoát dây sử dụng công ước JSON. Để duy trì tính tương thích , nội dung được xuất bản cho các phiên bản Flash Player cũ hơn tiếp tục sử dụng hành vi thoát cũ.

Tôi nên làm gì để ngăn cảnh báo hiển thị và "thoát kiểu cũ" mà tôi nên sử dụng thay vì "quy ước JSON" là gì?

+0

Bất kỳ ai biết cách xóa thông điệp cảnh báo? –

Trả lời

6

Cảnh báo này xuất hiện trong bảng điều khiển trình gỡ lỗi khi chuỗi được gửi từ SWF chạy đến JavaScript chứa ký tự bị cấm. Điều này cũng có thể ảnh hưởng đến việc liên kết sâu hoạt động như mong đợi hay không.

Cả hai ExternalInterfaceTrình quản lý trình duyệt API được thực thi. Nếu chỉ sử dụng phương thức escape() thì không đủ để loại bỏ cảnh báo, hãy thử:

escape(str).replace(/\./g, "%2E").replace(/\:/g, "%3A").replace(/\//g, "%2F"); 
+1

Câu trả lời này khắc phục nhiều trường hợp hơn khi cảnh báo xuất hiện, trái ngược với [kẻ thù của Dave Bleeker] (http://stackoverflow.com/a/28093823/244557) mà chỉ loại bỏ nó khỏi một số người trong số họ. –

-4

Nói chung bạn nên tránh bất cứ điều gì với từ "di sản" trừ khi bạn có một lý do rất tốt

lý do chính đáng bao gồm nhưng không giới hạn quá:

  1. Nỗ lực để chuyển đổi mã cũ xa hệ thống kế thừa không thể thực hiện được trong các ràng buộc kinh doanh hiện tại của bạn.
  2. Hệ thống cũ chứa các tính năng cần thiết cũng không được cung cấp bởi hệ thống mới hơn.

Sự cố với hệ thống cũ là công ty/nhà phát triển không có nghĩa vụ tiếp tục duy trì nó.

thông báo lỗi cụ này có nghĩa là:

  1. Nếu bạn đặt mục tiêu của bạn Flash Player 14 hoặc cao hơn, nó sẽ sử dụng các phương pháp thoát được JSON tuân thủ.
  2. Nếu điều đó không tương thích với mã bên ngoài của bạn, bạn cần nhắm mục tiêu Flash Player 13 trở xuống.

"JSON tuân thủ" hoặc "ước JSON" chỉ có nghĩa là bất kỳ nhân vật mà là đặc biệt để JSON sẽ được thoát để ngăn chặn các lỗi tiềm năng

+0

Tôi không chắc liệu từ "nhắm mục tiêu đến Flash Player 14" có nghĩa là người dùng truy cập trang web của tôi sẽ sử dụng Flash Player 14 hoặc Flash Builder của tôi nên được xây dựng để nhắm mục tiêu Flash Player 14. Nếu sau này, tôi chưa cập nhật SDK trong một thời gian dài. Những gì tôi sợ là người dùng nâng cấp lên Flash Player mới sẽ có thể sử dụng tất cả các mã hiện có của tôi hay không.Nếu không, tôi nên làm gì trong trường hợp tôi không thể kiểm soát phiên bản trình phát flash của người dùng. –

+0

"nội dung được xuất bản lên phiên bản Flash Player trước đó tiếp tục sử dụng hành vi thoát cũ." Điều này có nghĩa rằng những gì quan trọng là những gì bạn thiết lập khi bạn xuất bản, không phải những gì người dùng có. – CyanAngel

+2

Câu trả lời này không trả lời câu hỏi! –

10

Các lỗi được gây ra bởi vì các dữ liệu json không trốn thoát. Bạn có thể ngăn chặn lỗi đơn giản bằng cách thoát nó:

ExternalInterface.call(callBackFunction, escape(jsonData)); 

Hy vọng điều này sẽ hữu ích!

+1

Câu trả lời này tốt hơn rất nhiều so với câu trả lời được chấp nhận. Upvote. –

+1

Sử dụng 'thay thế' bổ sung từ [an toàn của CQ Bear] (http://stackoverflow.com/a/30202542/244557) loại bỏ cảnh báo trong mọi trường hợp tôi đã tìm thấy, trái ngược với điều này chỉ giải quyết một số trong số chúng . –

+0

Tôi đang truyền các đối tượng qua lại từ AS sang JS và JS thành AS và không thực tế hoặc luôn có thể thoát khỏi tất cả các đối tượng và dữ liệu. Tôi không biết nếu thoát nó là những gì Adobe đang đề xuất để bắt đầu với. Thông báo nói rằng phương thức mã hóa đã thay đổi. Nó không nói rằng nó bị hỏng. Tại một dữ liệu mức độ thực sự thấp được gửi trong một định dạng XML như http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7caf.html. Bây giờ nó được gửi dưới dạng JSON. Nhưng trong trình duyệt, điều này được thực hiện đằng sau hậu trường. Vì vậy, tin nhắn nên được tắt. –

Các vấn đề liên quan