Вызов Actionscript из JavaScript выдает исключение - PullRequest
0 голосов
/ 30 октября 2010

Я знаю, что этот предмет совсем не нов, но я сойду с ума, что он вообще не работает. Поэтому я создаю пример "KISS" (Keep It Stupide Simple), чтобы посмотреть, может ли это быть что-то из оригинального SWF или просто настоящая проблема ...

HTML размещен на веб-сайте A (на самом деле это также Javascript, но этот последний будет перемещен на веб-сайт C), а swf размещен на веб-сайте B.

Вот swf (от Adobe, чтобы он работал ...):

import flash.external.*;

Security.allowDomain("*");

var methodName:String = "goHome";
var instance:Object = null;
var method:Function = goToAdobe;
var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);

var txtField:TextField = this.createTextField("txtField", this.getNextHighestDepth(), 0, 0, 200, 50);
txtField.border = true;
txtField.text = wasSuccessful.toString();

function goToAdobe() {
    txtField.text = "http://www.adobe.com";
    getURL("http://www.adobe.com", "_self");
}

stop();

и HTML / Javascript: (HTML, сгенерированный из самой Flash с поддержкой FSCommand (так что allowScriptAccess «всегда») и javascript от Adobe тоже)

<!-- saved from url=(0013)about:internet -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>KISS</title>
</head>
<body bgcolor="#ffffff">
<script language="JavaScript">
<!--
var isInternetExplorer = navigator.appName.indexOf("Microsoft") != -1;

function KISS_DoFSCommand(command, args) {
 var KISSObj = isInternetExplorer ? document.all.KISS : document.KISS;

}
// Hook pour Internet Explorer
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1) {
 document.write('<script language=\"VBScript\"\>\n');
 document.write('On Error Resume Next\n');
 document.write('Sub KISS_FSCommand(ByVal command, ByVal args)\n');
 document.write(' Call KISS_DoFSCommand(command, args)\n');
 document.write('End Sub\n');
 document.write('</script\>\n');
}
//-->
</script>
<form>
    <input type="button" onclick="callExternalInterface()" value="Call ExternalInterface" />
</form>
<script>
function callExternalInterface() {
    thisMovie("KISS").goHome();
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}
</script>

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="KISS" width="550" height="400" align="middle">
<param name="allowScriptAccess" value="always" />
<param name="movie" value="http://www.adopsmanager.com/KISS.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="http://www.adopsmanager.com/KISS.swf" quality="high" bgcolor="#ffffff" width="550" height="400" swLiveConnect=true id="KISS" name="KISS" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer_fr" />
</object>
</body>
</html>

Спасибо!

1 Ответ

0 голосов
/ 30 октября 2010

Может быть,

 System.allowDomain

не было в оригинальном примере? Похоже, что остальная часть примера - код actionscript2, который будет означать, что вызов allowDomain:

System.security.allowDomain
...