2010-01-24 31 views

Trả lời

1

Tôi sẽ thử chuyển thông tin được yêu cầu dưới dạng flashvar. Không phải là giải pháp tốt nhất mà tôi biết, nhưng nó sẽ hoạt động.

Flash: FlashVars in AS3

+0

Vấn đề duy nhất với kỹ thuật này là Flash sẽ chia nhỏ một số url thành các biến riêng lẻ. Điều này xảy ra với GET URL, ví dụ: * .com? One = 1 & two = 2. Vì vậy, hãy ghi nhớ điều đó! –

+0

@TylerEgeto bạn có thể khắc phục điều đó bằng cách mã hóa URL với các ký tự đặc biệt HTML – Tchakabam

0

tôi nghĩ rằng posible của nó sử dụng giao diện bên ngoài một làm điều đó với javascript window.location

15

này cung cấp cho một đi:

import flash.external.ExternalInterface; 

var url:String = ExternalInterface.call("window.location.href.toString"); 
if (url) textfield.text = url; 

nên làm các trick.

+0

điều thú vị, bạn có thể viết javascript bên trong actionscript mà không cần html. – atilkan

+0

ToString làm gì? Đó có phải là một chức năng được Flash thêm vào không? – Eddie

2

Có một số cách để giải quyết vấn đề này, tuy nhiên tất cả đều liên quan đến việc sử dụng JavaScript để truy vấn trực tiếp trình duyệt. Cách thức ưa thích của tôi để giải quyết vấn đề này là cung cấp URL thông qua thuộc tính flashVar, trực tiếp từ mã nhúng (cá nhân, tôi khuyên bạn nên sử dụng SWFObject để làm điều này dễ dàng hơn); đừng quên bạn sẽ cần phải URL Mã hóa nó để tránh các vấn đề đánh dấu.

var flashvars = { 
    browserURL: escape(location.href) 
}; 
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars); 

Bây giờ bạn sẽ có thể truy cập vào địa chỉ URL trình duyệt thông qua các đối tượng loaderInfo:

trace(stage.loaderInfo.parameters["browserURL"]); 

lưu ý rằng điều này sẽ chỉ làm việc nếu bạn có quyền kiểm soát của HTML được tạo ra cho tập tin SWF của bạn - nếu người dùng sẽ lấy SWF và viết HTML nhúng riêng của họ, nó sẽ không hoạt động.

Nếu bạn không có quyền kiểm soát HTML nhúng HTML, thì bạn sẽ cần nhận flash để truy vấn trình duyệt khi chạy bằng lớp ExternalInterface; người khác đã gợi ý việc sử dụng "window.location.href.toString" tuy nhiên điều này có thể chứng minh vấn đề trong IE6, tôi thấy các công việc sau cách đáng tin cậy trên tất cả các trình duyệt

const browserURL : String = ExternalInterface.call("eval", "window.location.href"); 

Lưu ý rằng để cho tiện làm việc, bạn sẽ cần cấp quyền truy cập JavaScript cho phim Flash của bạn, điều này được thực hiện, một lần nữa, thông qua mã nhúng HTML và allowScriptAccess param

2
var url:String = loaderInfo.loaderURL; 

dường như cũng hoạt động.

0

Tôi đã sử dụng đèn flash trong một thời gian dài và không bao giờ nhận thấy điều này. Nó chỉ cung cấp cho các miền mặc dù cho an ninh. Nó cũng hoạt động thông qua các swfs đã tải. Không chắc chắn về iframe.

Security.pageDomain 
Các vấn đề liên quan