Actionscript3 для связи JavaScript: лучшие практики
на более абстрактном уровне, то предыдущий вопрос по моему опыту есть 3 способа вызвать функцию JavaScript на HTML-страницу с встроенным .swf с использованием AS3: ExternalInterface, fscommand и navigateToURL.
давайте сравним и сопоставим эти методы (и, возможно, другие, которые я не перечислил) и поговорим о плюсах и минусах каждого - прямо сейчас, ExternalInterface кажется как путь пойти с точки зрения гибкости, но это правильно для всех ситуации? Есть ли конкретные преимущества с точки зрения скорости выполнения или что-то в этом роде? Мне любопытно - что мы думаем?
3 ответов
ExternalInferface был создан, чтобы упростить связь между JS и Flash, поэтому на самом деле нет смысла использовать что-либо еще. Обычной практикой является проверка его доступности сначала путем оценки значения ExternalInterface.доступное свойство перед вызовом некоторых JS. Это свойство сообщает вам, если SWF, в котором вы хотите вызвать некоторые JS из находится внутри контейнера, который предлагает внешний интерфейс. Другими словами, при использовании ExternalInterface будет работать. Если его нет доступно, а затем просто используйте flash.сеть.sendToUrl. Никогда не используйте fscommand (), поскольку он использует VBScript и может вызвать конфликты с другим VBScript на странице. Кроме того, вы можете отправить только одну строку аргумента с помощью fscommand и разделить ее на стороне JS.
все зависит от того, хотите ли вы, чтобы связь была синхронной или нет, как ExternaInterface
может возвращать данные как where navigatoToURL
и fscommand
являются асинхронными и могут вызывать только функцию javascript; они не могут возвращать значения или ответ.
из live docs по отношению к внешнему интерфейсу:
из ActionScript, вы можете сделать следующее на HTML-странице:
- вызовите любую функцию JavaScript.
- передать любое количество аргументов, с любыми именами.
- передать различные типы данных (логическое, число, строка и так далее).
- получить возвращаемое значение из функции JavaScript.
из JavaScript на HTML-странице вы можете:
- вызов функции ActionScript.
- передайте аргументы, используя стандартную нотацию вызова функции.
- возвращает значение функции JavaScript.
на flash.external.ExternalInterface
класс является прямой заменой для flash.system.fscommand
класса.
таким образом, использование ExternalInterface является предпочтительным методом или связью между flash и функцией Javascript, хотя если вызов просто асинхронный, можно использовать flash.net.navigateToURL
.
ExternalInterface
- вы можете получить возвращаемое значение от вызовов js-AS и AS-JS
- кодирует ваши аргументы (звонить с массивами, объектами и т. д. Не нужно их кодировать)
- Кросс-браузер
- ошибка при отправке HTML или JSON (специальная кодировка), это разрывы внутри
getURL
- вы можете только вызвать JS, вы не получаете возвращаемое значение и вы нужно закодировать ваши данные
- было приятно, чем устарело, и во Flash 10 он удален
- он действительно удален, поэтому не используйте его;)
fscommand
- Давай, ExternalInterface-это решение (для 2008 года).