ExternalInterface в Chrome
Привет.
Столкнулся со следующей проблемой. Мне надо с JS сохранять данные в LSO. Но проблема в том, что в Chrome (14.0.835.202 Ubuntu 11.04) код отказывается работать, ругаясь на несуществующий setter-метод. Элемент, который содержит swf, генерируется динамически. Но если захардкожен и внутри есть "<a href="http://www.adobe.com/go/ getflashplayer"><img src="http://www.adobe.com/images/shared/ download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" / ></a>", то setter вызывается отлично и из-под Chrome. Кстати, в этом варианте на что бы я не менял ссылку на этот gif, Chrome отказывается работать снова - только родной gif и только с сайта Adobe. Полная магия. Итак, вот код: HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>LSO Test</title>
</head>
<body>
<div style="display:none;">
<script type="text/javascript" src="/swfobject/swfobject.js"></
script>
<script type="text/javascript">
div = document.createElement('div');
div.setAttribute("id", 'lso_el');
document.body.appendChild(div);
swfobject.embedSWF("http://lso.dev/lso.swf", "lso_el",
"0", "0", "9.0.0");
swfobject.addLoadEvent(function () {
swfobject.getObjectById('lso_el').setLSOValue('Works!');
alert(swfobject.getObjectById('lso_el').getLSOValue());
});
</script>
</div>
<!--<div id="lso_el">-->
<!--<h1>Alternative content</h1>-->
<!--<p><a href="http://www.adobe.com/go/getflashplayer"><img
src="http://www.adobe.com/images/shared/download_buttons/
get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>-->
<!--</div>-->
</body>
</html>
AS:
package {
import flash.display.Sprite;
import flash.external.ExternalInterface;
import flash.net.SharedObject;
public class Lso extends Sprite {
public function Lso() {
if (ExternalInterface.available) {
try {
ExternalInterface.addCallback("getLSOValue", getLSOValue);
ExternalInterface.addCallback("setLSOValue", setLSOValue);
} catch (error:Error) {}
}
}
private function getLSOValue():*
{
try {
var value:*;
var lso:* = SharedObject.getLocal("Lso_uid");
if (lso.data.value != null) {
value = lso.data.value;
}
if (ExternalInterface.available) {
return value;
}
}
catch(e) {}
}
private function setLSOValue(value):void
{
try{
var writeSuccess:Boolean = false;
var lso = SharedObject.getLocal("Lso_uid");
lso.data.value = value;
var success = lso.flush();
if (success == "pending") {
lso.onStatus = function(result) {
if (result.code == "SharedObject.Flush.Success") {
writeSuccess = true;
} else {
writeSuccess = false;
}
};
} else {
writeSuccess = success;
}
}
catch(e) {}
}
}
}
Скомпилированная флэшка доступна отсюда http://ubuntuone.com/2uD2oqN6ermnI03995ILNX Магия проявляется только под Chrome/Chromium. Подскажите, как решить проблему. Второй день голову ломаю. Спасибо. |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
| Часовой пояс GMT +3, время: 21:00. |