Flex uygulamasında, Actionscript yöntemlerimden birini çağırmak için bir Javascript denetimine ihtiyacım var. Basit yeterli, Flex/ActionScript belgelerine göre, benim ActionScript kodunda bu yazmış:Actionscript'in ExternalInterface.addCallback yalnızca yerel olarak çalışıyor, üretimde değil
if (ExternalInterface.available)
ExternalInterface.addCallback("setName", setNameInActiveWindow);
yazdım JavaScript kontrolde:
document.getElementById('FlexAppId').setName(name);
oldukça uygundur. Tam olarak beklendiği gibi, ben de üretime gittim. Ama bu üretimde çalışmaz :(Aynı tam kod ... Bunu anlayamıyorum Yukarıdaki Javascript kodu çalıştırılıyor, ancak geri arama işlemi ActionScript kodunda çalıştırılmıyor
Bu var mı etki alanı güvenliği ile ilgili bir şey var mı? Yerel olarak, local.mydomain.com:8080 kullanıyorum local.mydomain.com 127.0.0.1 (bu yüzden bazı widget'lar düzgün bir şekilde çalışması için bunu yapmalıyım) çözer. Ve Flex uygulaması Aynı yerel web sunucusu.Yalnızca üretimde, sadece www.mydomain.com (mydomain.com gerçek alan adı değil) ve Flex uygulaması flash.mydomain.com'dan geliyor (CDN)
www.mydomain.com adresindeki bir crossdomain.xml dosyası:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*.mydomain.com"/>
</cross-domain-policy>
UPDATE: Flex uygulamasının üretimde olduğu gibi flash.mydomain.com adresinden başvurulması için yerel ortamı değiştirmeyi denedim. Aynı sorunu yerel olarak da aldığım ortaya çıkıyor ... bu yüzden yukarıda gördüğüm crossdomain.xml dosyasına rağmen bir tür alan adı güvenlik sorunu var gibi görünüyor. Crossdomain.xml adresimde bir şeyi değiştirmem gerekiyor mu? Çalışmak için ExternalInterface.addCallback
almam gereken ek bir şey var mı?
UPDATE 2: Çalıştırdım! Hem Security.allowDomain("*")
hem de Security.allowInsecureDomain("*")
yapmak zorunda kaldım. Flash.mydomain.com adresine ayarlanması sorunu çözmedi, bir joker koymam gerekiyordu. allowNetworking
hiçbir etkisi olmamıştır. allowScriptAccess="always"
'a ihtiyacım var, ama bunu daha önce aldım. Javascript'i ExternalInterface.call
ile aramak sadece bu parametre ile kolayca çalışır. Ancak, ExternalInterface.addCallback
numaralı telefondan bir geri arama eklemek, yukarıdaki joker karakterli Güvenlik yöntemlerini gerektirir.
Crossdomain.xml önemli olmamalı:
fazla bilgi için, bakınız. html sunucunuzda mı yoksa html yerel mi ve swf uzaktan mı yükleniyor?Yerel olarak – greggreg
, html ve flash, her ikisi de local.mydomain.com:8080 adresinden gelir. Uzaktan, html www.mydomain.com adresinden gelir ve flash.mydomain.com adresinden flaş gelir. Flaş konumunu lokal olarak flash.mydomain.com olarak değiştirdiğimde, aynı sorunu alıyorum, geri aramalar artık çalışmıyor. –
Flex uygulamanızı gömerek, gelen HTML'deki allowScriptAccess parametresinin değeri nedir? –