Получить текущий URL браузера - ActionScript 3 - PullRequest
11 голосов
/ 24 января 2010

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

Ответы [ 6 ]

15 голосов
/ 24 января 2010

Попробуй:

import flash.external.ExternalInterface;

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

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

2 голосов
/ 13 апреля 2012
var url:String = loaderInfo.loaderURL;

, кажется, тоже работает.

2 голосов
/ 25 января 2010

Существует несколько способов решения этой проблемы, однако все они связаны с использованием 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-код для вставки, это не сработает.

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

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

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

1 голос
/ 24 января 2010

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

Flash: FlashVars в AS3

0 голосов
/ 28 апреля 2015

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

Security.pageDomain
0 голосов
/ 24 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...