01/10/2018, 17:05

Dùng tên “play” làm tham số hàm ExternalInterface.addCallBack không chạy trên IE

Lỗi này có thể xem như một lỗi hy hữu, có lẽ hiếm thấy kể từ khi tôi viết ActionScript cho Flash. Bởi vì tôi luôn mặc định trong tâm trí là Flash có thể chạy như nhau trên mọi trình duyệt web. Nhưng kể từ bài viết này xem như điều đó không còn đúng nữa. Vấn đề phát sinh khi tôi viết một ứng ...

Lỗi này có thể xem như một lỗi hy hữu, có lẽ hiếm thấy kể từ khi tôi viết ActionScript cho Flash. Bởi vì tôi luôn mặc định trong tâm trí là Flash có thể chạy như nhau trên mọi trình duyệt web. Nhưng kể từ bài viết này xem như điều đó không còn đúng nữa.

Vấn đề phát sinh khi tôi viết một ứng dụng Flash. Ứng dụng này của tôi có tương tác với JavaScript để trao đổi dữ liệu. Tôi dùng hàm ExternalInterface.addCallBack và dùng tên hàm là “play” để JavaScript sử dụng tương tác với Flash. Khi tôi tiến hành test ứng dụng trên các trình duyệt Firefox, Chrome đều không có vấn đề. Lỗi phát sinh khi tôi chạy ứng dụng của tôi trên Internet Explorer. Nhưng IE luôn phát ra thông báo “Object doesn’t support this property or method”. Tôi cứ nghĩ lỗi này là do code JavaScript tôi viết và mất nhiều giờ để ngồi debug code JavaScript.


Nhưng nguồn gốc phát sinh ra lỗi không phải do JavaScript, mà do Flash và Internet Explorer không ăn rơ với nhau. Lý do phát sinh ra lỗi là tôi dùng tên “play” cho hàm gọi từ JavaScript khiến cho trình duyệt không chạy Flash. Bạn muốn sửa được lỗi này chỉ có một cách là đổi tên “play” thành một tên khác như “playMovie”, “playVideo”….

Ví dụ:
ExternalInterface.addCallback(“play”, callPlayFromJS) —->sẽ phát sinh lỗi.

Cách sửa:
ExternalInterface.addCallback(“playMyFile”, callPlayFromJS).

Tôi mất một ngày vì cái lỗi ngốc nghếch của Internet Explorer. Hy vọng các bạn đọc được bài này tránh được lỗi của tôi gặp phải.


0