Frage

Ich schrieb eine Flex-Anwendung, die den Host-String aus dem Browser mit diesem Code

erhalten
ExternalInterface.call("window.location.host.toString")

Diese Codezeile Arbeit prefectally in Firefox und Opera das Host-String zu erhalten. Wenn jedoch IE verwenden, ist die zurückgegebene Zeichenfolge immer ‚Null‘. Ich brauche diese Informationen aus dem Browser heraus zu bekommen. Ich weiß, dass es eine Arbeit ist um durch eine Javascript-Funktion definiert, die eine solche Zeichenfolge erhalten und diese Funktion aus der Anwendung aufrufen. Jedoch erfordert meine Anwendung, wie Informationen aus einer natürlichen Quelle erhalten.

Ich habe mich gefragt, ob jemand das gleiche Problem hatte und schaffte es zu lösen, oder wenn jemand eine Idee hat, warum ich immer null bekommen in IE, aber nicht, wenn Firefox und Opera mit

Bearbeiten 1:

Hier ist der HTML-Code, um die erzeugte SWF-Datei zum Einbetten. Vielleicht ist dies nützlich, einen Fehler zu erkennen

<object id="myTest1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="330px" width="600px">
<param name="movie" value="http://www.website.com/test.swf" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
<embed id="myTest1" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.website.com/test.swf" allowScriptAccess="always" wmode="transparent" height="330px" width="600px" flashvars=""></embed>
</object>

die ID, classid und die allowScriptAccess eingestellt, wie gezeigt

Jede Idee?

Edit 2:

für Lior Cohen Die Flex-Datei ist das Beispiel, in Ihrem ersten Link verwendet. Das Unterverzeichnis Geschichte enthält history.js, history.css und historyFrame.html. Die HTML-Seite, die die erzeugte SWF-Datei enthalten ist wie folgt

<html>
<head>
<!--  BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css"/>
<script src="history/history.js" language="javascript"></script>
<!--  END Browser History required section -->
</head>
<body>
<object id="file1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" height="330px" width="600px">
    <param name="movie" value="file.swf" />
    <param name="allowScriptAccess" value="always" />
    <param name="wmode" value="transparent" />
    <embed id="file2" pluginspage="http://www.macromedia.com/go/getflashplayer" src="file.swf" allowScriptAccess="always" wmode="transparent" height="330px" width="600px" flashvars=""></embed>
</object>
<body>
</html>

Dies ist jedoch immer noch nicht funktioniert wie erwartet.

Bearbeiten 3:

ich das Problem entdeckt habe, aber ich kann es nicht reparieren. Das Problem hat mit der JavaScript-Engine von IE und nicht die ExternalInterface noch das Objekt und einbetten HTML-Tags zu tun.

Was ich in meinem Fall mache, ist die Aufgabe und embed-Tags in eine div schreiben Javascript erstellt mit und dieses div bis zum Ende des Körpers angehängt wird, um die DOM-Methoden verwenden. Allerdings ist eine solche Vorgehensweise machen die InternalInterface immer null zurück in IE (aber nicht in Firefox noch in Opera).

var swfDiv = document.createElement('div');
swfDiv.innerHTML = '<object id="test1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="600" height="330"><param name="movie" value="http://www.website.com/test.swf" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><embed id="test2" name="test2" src="http://www.website.com/test.swf" allowScriptAccess="always" allowFullScreen="false" quality="high" width="600" height="330" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';
document.body.appendChild(swfDiv);

Ich habe versucht document.write zu verwenden, um die HTML-Inhalt anzuhängen, die es perfekt in IE gemacht arbeiten, aber schrieb document.write über die gesamte Seite (Entfernen alter Inhalt), die etwas, das ich nicht will.

document.write('<object id="test1" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="600" height="330"><param name="movie" value="http://www.website.com/test.swf" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="quality" value="high" /><embed id="test2" name="test2" src="http://www.website.com/test.swf" allowScriptAccess="always" allowFullScreen="false" quality="high" width="600" height="330" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>');

Jede Idee, wie dieses Problem beheben?

Danke

War es hilfreich?

Lösung 3

Die Lösung für das Problem, das in „Edit 3“ genannt wird, ist im Grunde den Objekt-Tag und seine Parameter-Tags erstellen mit DOM-Objekten, statt sie nur als Zeichenfolge für das Innerhtml-Attribut angeben. Dadurch wird den Rückgabewert der ExternalInterface Arbeit im Internet Explorer machen. Hier ein Beispiel:

var swfDiv = document.createElement('div');

var obj = document.createElement('object');
obj.setAttribute('id','test1');
obj.setAttribute('codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0');
obj.setAttribute('width','600px');
obj.setAttribute('height','330px');

var param = document.createElement('param');
param.setAttribute('name','movie');
param.setAttribute('value','http://www.website.com/test.swf');
obj.appendChild(param);

param = document.createElement('param');
param.setAttribute('name','allowScriptAccess');
param.setAttribute('value','always');
obj.appendChild(param);

param = document.createElement('param');
param.setAttribute('name','wmode');
param.setAttribute('value','transparent');
obj.appendChild(param);

swfDiv.appendChild(obj);
document.body.appendChild(swfDiv);

document.getElementById('test1').setAttribute('classid','clsid:d27cdb6e-ae6d-11cf-96b8-444553540000');

Anmerkung 1: Das wird es mit dem Internet Explorer ein anderer Browser eine der Methode funktioniert sollte oben in „Edit 3“ der Frage erwähnt verwenden. Sie können den Browser erkennen und den richtigen Code entsprechend verwendet werden.

Hinweis 2: Die letzte Zeile ist erforderlich, damit es richtig funktioniert, und es hat so und am Ende sein, nachdem das Objekt in das Dokument hinzufügen. Ich weiß nicht, warum, wahrscheinlich es mit dem seltsamen Browserverhalten zu tun hat.

Andere Tipps

Werfen Sie einen Blick auf den folgenden Link. Es sollten Sie mit dem, was Sie suchen, ohne ExternalInterface.call ().

http://livedocs.adobe.com /flex/3/html/help.html?content=deep_linking_7.html

Wie oben auf der Seite erwähnt, für die Browsermanager-Klasse seine volle Funktionalität zu bieten, muss der Wrapper umfassen mehrere unterstützende Dateien (history.js ua).

Weitere Informationen darüber, wie diese unterstützenden Dateien zu erhalten und können in dem folgenden Link unter „Bereitstellen von Anwendungen, die Deep-Linking verwenden“ zu finden Abschnitt.

http://livedocs.adobe.com /flex/3/html/help.html?content=deep_linking_2.html

Eine schnelle Suche zeigt Ihnen einige zusätzliche Attribute für das Objekt festgelegt werden müssen, um es in IE zu arbeiten. Set ID classId und scriptAccess (die letzte auf ‚true‘ natürlich) diese Arbeit zu bekommen. (Google für weitere Informationen)

(nicht getestet).

http://www.google.com/search?q=externalinterface + Internet + Explorer

@AAA

  

Hinweis 2: Die letzte Zeile ist erforderlich, damit es richtig funktioniert, und es muss sein, wie   das und am Ende, nachdem das Objekt zu dem Dokument hinzugefügt wird. Ich weiß es nicht   warum, wahrscheinlich hat es mit dem seltsamen Browserverhalten zu tun.

Vielen Dank! Ich nehme an, es ein Fehler in IE ist. Ich frage mich, wie Sie herausgefunden haben.

SWFObject (Sie werden es unter http://code.google.com/p / swfobject / ) löst in Internet Explorer dieses Problem auch den Flash auf der Seite zu platzieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top