Есть ли способ выполнить функцию JS из ActionScript с локальным контентом? - PullRequest
0 голосов
/ 12 марта 2011

Я пытаюсь выполнить функцию, например window.alert, например, из actionscript, когда html-файл и swf-файл используют протокол file:.

Кто-нибудь знает, как-нибудьсделать это?

без изменения глобальных настроек безопасности флэш-памяти

Ответы [ 3 ]

2 голосов
/ 13 марта 2011

Похоже, что это невозможно после чтения Контроль доступа к сценариям на веб-странице хоста .

Для SWF-файлов, работающих локально, вызовы этих API-интерфейсов успешны, только еслиSWF-файл и содержащая его веб-страница (если она есть) находятся в изолированной программной среде безопасности, которой доверяют локально.Вызовы этих методов не выполняются, если содержимое находится в локальной изолированной программной среде с локальной сетью или локальной с файловой системой.

Тогда эта страница в локальных песочницах в основном говорит, что выиграл 'не работает, если SWF-файл находится в «локальной изолированной программной среде», в которую пользователь или установщик должен был бы поместить ее.

Это сообщение в блоге о "изолированной программной среде с локальной файловой системой""говорит:

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

  1. SWF не может выполнить вызов JavaScript (или vbscript) ни через URL, ни через ExternalInterface
  2. SWF не может вызвать запрос HTTP или HTTPS.
  3. Параметры строки запроса (например, Blah.php? Querystring = qs-value) удаляются и не будут передаваться (даже для запросов к локальным файлам)
1 голос
/ 12 марта 2011

Существует документ " Управление доступом к сценариям на веб-странице хоста ", в котором описаны различные способы и ограничения, позволяющие содержимому Flash взаимодействовать с Javascript.

Согласно документу, если ваш тег для вставки содержит AllowScriptAccess, установленный в значение «Always», все будет в порядке независимо от того, откуда загружена страница.

0 голосов
/ 12 марта 2011

Вам необходимо обновить Настройки Flash Player , чтобы путь к файлу был указан как «надежное расположение». После этого вы сможете использовать внешний интерфейс и другие методы связи JS.

Кроме того, вы не можете передавать функции JS по умолчанию из AS с использованием внешнего интерфейса (например, alert ). Вам нужно написать пользовательские функции ...

ActionScript:

import flash.external.ExternalInterface;
ExternalInterface.call("alertFromFlash", 'hello');

JavaScript:

function alertFromFlash(str) {
   alert(str);
}

В качестве альтернативы, если вы распространяете это среди клиентов. Может быть трудно объяснить, как изменить настройки Flash Player, поэтому вместо этого вы можете запустить сервер с компакт-диска, что позволяет обойтись без настроек безопасности. В прошлом мне повезло с сервером Flying Ant .

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