2011-11-18 10 views
5

Tôi có một vài nút trong ứng dụng flash gọi hai hàm javascript khác nhau. Chúng hoạt động trong tất cả các trình duyệt ngoại trừ IE9 (tôi chưa thử các IE trước đó). Mã của tôi để gọi hàm là một cái gì đó như thế này:Tại sao cuộc gọi của tôi từ flash sang Javascript không thành công trong IE9?

ExternalInterface.call(
     "myLovelyFunction", 
     string1, string2); 

và mã kiểm tra vào JS trông như thế này:

function myLovelyFunction(string1, string2) { 
    window.open('https://twitter.com/share?url=http%3A%2F%2Fwww.mysite.com%2Fapage.php&via=atwitteraccount&text=Some%20text%22&related=atwitteraccount', 
    'windowname', 
    'height=290,width=510'); 
} 

Trong IE9, chức năng thực hiện hoàn toàn không có gì, nhưng giao diện điều khiển than phiền với:

SCRIPT438: Object doesn't support property or method 'SetReturnValue' 
index.php, line 1 character 1 

dòng 1, ký tự 1 rõ ràng không trỏ cụ thể.

Tôi có thể làm cho nó hoạt động tốt bằng cách bật chế độ xem tương thích, mặc dù lỗi bảng điều khiển không biến mất.

Có điều gì về IE9 gây ra điều này hay không và quan trọng hơn, làm cách nào để khắc phục sự cố này?

+2

xem mã thực của bạn thay vì "một cái gì đó như thế này" sẽ rất hữu ích. Có lẽ ngay cả một liên kết đến một trang web thử nghiệm? –

+0

thêm toàn bộ phần thân của hàm js, mặc dù phần thân của hàm dường như không quan trọng chút nào. – izb

+0

Bạn có xảy ra một cái gì đó như thế này 'Foobar.SetReturnValue()' và một phần tử HTML với một ID của 'Foobar' trong trang của bạn? – HoLyVieR

Trả lời

6

Tôi cũng gặp vấn đề này. Tôi đã sử dụng mã sau:

<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250"> 
     <param name="movie" value="/files/banners/64/64_300x250.swf"/> 
     <param name="wmode" value="transparent"/> 
    </object> 

Tôi chỉ nhúng flash với thẻ đối tượng thông thường (không có SWFObject và không có dự phòng nhúng). tập tin flash của tôi gọi hàm JS window.open qua ExternalInterface như thế này:

ExternalInterface.call("window.open", url, target, features); 

gì đã không làm việc: Liên kết ở trên đề nghị thay đổi nó để "document.open", mà đã không làm việc. Đồng thời cố gắng buộc trang hiển thị ở chế độ IE-8 không hoạt động. Ví dụ:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

gì đã làm công việc: Đơn giản chỉ cần thêm một "tên" và "id" cho thẻ đối tượng giải quyết vấn đề này. Ví dụ:

<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250" name="flash_object" id="flash_object"> 
+0

Câu trả lời này đã tiết kiệm cho tôi số giờ giao dịch với Internet Explorer 11. Tôi đã giải quyết được vấn đề trong 5 phút, cảm ơn rất nhiều! –