Получить текущий URL браузера - ActionScript 3

Я пытаюсь получить текущий URL-адрес браузера. Я уже пробовал использовать External Call, и это не сработало. И с loaderInfo.url я получаю текущий SWF-URL.

Ответ 1

Дайте этому ходу:

import flash.external.ExternalInterface;

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

должен сделать трюк.

Ответ 2

Существует несколько способов решить эту проблему, однако все они связаны с использованием JavaScript для непосредственного запроса браузера.

Мой предпочтительный способ решить эту проблему - предоставить URL-адрес через свойство flashVar прямо из кода встраивания (лично я бы рекомендовал использовать SWFObject, чтобы сделать это проще); не забывайте, что вам понадобится URL-адрес. Кодируйте его, чтобы избежать проблем с разметкой.

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

Теперь вы сможете получить доступ к URL-адресу браузера с помощью объекта loaderInfo:

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

обратите внимание, что это будет работать только в том случае, если у вас есть контроль над сгенерированным HTML для вашего SWF файла - если пользователи собираются захватить SWF и написать собственный HTML-код для встраивания, это не сработает.

Если у вас нет контроля над встроенным HTML-флешем, вам необходимо получить флэш-запрос для запроса браузера во время выполнения с использованием класса ExternalInterface; другие люди предложили использовать "window.location.href.toString", однако это может оказаться проблематичным в IE6, я нахожу, что следующие работы надежно работают во всех браузерах.

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

Обратите внимание, что для того, чтобы это сработало, вам необходимо предоставить доступ к JavaScript вашему Flash-ролику, это делается снова с помощью кода вставки HTML и параметр allowScriptAccess

Ответ 3

var url:String = loaderInfo.loaderURL;

похоже, тоже работает.

Ответ 4

Я попробую передать необходимую информацию в качестве flashvar. Не лучшее из ясного решения, которое я знаю, но оно будет работать.

Flash: FlashVars в AS3

Ответ 5

Я думаю, что его можно использовать с внешним интерфейсом и сделать это с помощью javascript window.location

Ответ 6

Я использую flash в течение длительного времени и никогда не замечал этого. Он предоставляет домен только для обеспечения безопасности. Он также работает через загруженные swf. Не уверен в iframe.

Security.pageDomain