2010-03-18 27 views

Trả lời

7

Có, thông qua lớp ExternalInterface.

Bạn có thể thực hiện cuộc gọi tới Javascript từ bên trong phim Flash và lấy lại bất kỳ thông tin công khai nào về trang mà trái tim bạn mong muốn.

Phụ Lục

Nhìn vào này một năm rưỡi sau đó, tôi quyết định thêm một số ví dụ:

Giả sử bạn có một hàm JS trên trang khách hàng của bạn như thế này:

function foo(bar,type) { 
    // do something with bar and type 
} 

Bạn gọi từ Flash (sử dụng AS3) như sau:

ExternalInterface.call(foo, bar, type); 

Lưu ý rằng tên hàm là đối tượng đầu tiên và các đối số được liệt kê tuần tự sau đó.

Để phơi bày một phương pháp của Flash movie ra ngoài Javascript, bạn sẽ làm điều này trong Flash hoặc Flex (một lần nữa, AS3):

application1_applicationCompleteHandler(event:Event) { 
    // the app has finished loading, so do whatever we 
    // have to do on load, plus add that callback 
    ExternalInterface.addCallback(foo, bar); 
} 

public function bar(arg1, arg2) : void { 
    // do something with arg1 and arg2 
} 

Trong javascript trên trang bạn gọi nó như thế này (nơi myMovie là ID của các SWF):

myMovie.foo(anArg, anotherArg); 

trong phương pháp addCallback, đối số đầu tiên là tên bên ngoài của hàm, và đối số thứ hai là việc đóng cửa sẽ được gọi.

+0

cách nhận thuộc tính từ đối tượng dom? Ví dụ: '

'? Làm thế nào để tôi có được thuộc tính dữ liệu? – Sisir

3

Không phải là tôi biết, nhưng họ có thể thực thi javascript trong tài liệu có chứa, mà rõ ràng là sau đó có thể truy cập vào bản thân DOM.

+0

Nếu tôi có một số cuộc gọi AJAX trong tài liệu gốc, tôi có thể liên lạc với đối tượng Flash bằng cách nào đó không? – devviedev

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