Выполнение внешних сценариев и доступ к внешним URL-адресам (через HTTP-адреса, ссылки «mailto:» и т. д.) осуществляется с помощью следующих API-интерфейсов.
-
функция
flash.system.fscommand()
;
-
метод
ExternalInterface.call()
;
-
функция
flash.net.navigateToURL()
.
Для содержимого, загруженного из локальной файловой системы, вызовы этих методов успешны, только если код и содержащая веб-страница (если таковая имеется) находятся в локальной доверенной изолированной программной среде или изолированной программной среде приложения AIR. Вызовы этих методов не выполняются, если содержимое находится в локальной изолированной программной среде файловой системы или с сетевым подключением.
Для содержимого, которое не загружено локально, все эти API-интерфейсы могут взаимодействовать с веб-страницей, в которую они встроены, в зависимости от значения параметра AllowScriptAccess, который описывается ниже. Функция
flash.net.navigateToURL()
также может взаимодействовать с любым открытым окном или фреймом обозревателя, а не только со страницей, в которую встроен SWF-файл. Дополнительные сведения об этой возможности см. в разделе «
Использование функции navigateToURL()
».
Параметр
AllowScriptAccess
в HTML-коде, который загружает SWF-файл, управляет возможностью доступа к внешним URL-адресам через SWF-файл. Этот параметр нужно задать внутри тега PARAM или EMBED. Если для параметра
AllowScriptAccess
не задано значение, SWF-файл и HTML-страница могут взаимодействовать, только если находятся в одном и том же домене.
Параметр
AllowScriptAccess
может иметь одно из трех возможных значений:
"always"
,
"sameDomain"
или
"never"
.
-
Если параметр
AllowScriptAccess
имеет значение
"always"
, SWF-файл может обращаться к HTML-странице, в которую он встроен, даже если он находится в другом домене.
-
Если параметр
AllowScriptAccess
имеет значение
"sameDomain"
, SWF-файл может обращаться к HTML-странице, в которую он встроен, только если они находятся в одном домене. Это значение используется для параметра
AllowScriptAccess
по умолчанию. Используйте эту настройку или не задавайте никакого значения для
AllowScriptAccess
, чтобы SWF-файл из одного домена не мог обращаться к сценарию HTML-страницы из другого домена.
-
Если свойство
AllowScriptAccess
имеет значение
"never"
, SWF-файл не может обращаться ни к каким HTML-страницам. Это значение не используется, начиная с выпуска Adobe Flash CS4 Professional. Это не рекомендуется и не является необходимым, если вы не размещаете недоверенные SWF-файлы на собственном домене. Если возникла необходимость размещения недоверенных SWF-файлов, компания Adobe рекомендует создать отдельный субдомен, на который следует помещать все недоверенное содержимое.
Ниже приводится пример настройки тега
AllowScriptAccess
HTML-страницы, которая разрешает доступ к внешним URL-адресам другого домена.
<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'>
<param name='AllowScriptAccess' value='always'/>
<param name='src' value=''MyMovie.swf'/>
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/>
</object>
Использование функции navigateToURL()
Помимо обеспечения безопасности с помощью описанного выше параметра
allowScriptAccess
, функция
navigateToURL()
имеет дополнительный второй параметр —
target
. С помощью параметра
target
можно указать имя окна или фрейма HTML-страницы, которому требуется отправить URL-запрос. К таким запросам применяются дополнительные ограничения по безопасности, которые варьируются в зависимости от того, используется метод
navigateToURL()
со сценарием или без него.
Если в метод включен сценарий, например
navigateToURL("javascript: alert('Hello from Flash Player.')")
, применяются следующие правила.
-
Если SWF-файл находится в локальной доверенной изолированной среде, запрос выполняется успешно.
-
Если целью является HTML-страница, в которую встроен SWF-файл, применяются правила для параметра
allowScriptAccess
, описанные выше.
-
Если цель включает содержимое, загруженное из домена SWF-файла, запрос выполняется успешно.
-
Если цель включает содержимое, загруженное из другого домена, и не выполнены предыдущие два условия, запрос не выполняется.
Если в метод не включен сценарий (например, ссылки HTTP, HTTPS и
mailto:
), запрос не выполняется при наличии всех перечисленных ниже условий:
-
в значении параметра target присутствуют специальные ключевые слова
"_top"
или
"_parent"
и
-
SWF-файл встроен в веб-страницу, размещенную на другом домене, и
-
SWF-файл встроен с использованием параметра
allowScriptAccess
, для которого не задано значение
"always"
.
Дополнительные сведения
Дополнительные сведения о доступе к внешним URL см. в описании следующих элементов в
cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform:
|
|
|