Flash. SharedObject.
Там, где нет DOM Storage, для offline-хранения используют flash-интерфейс SharedObject. Он позволяет хранить самые разные объекты средствами Adobe Flash.
Пример ActionScript для работы с SharedObject:
// создать/получить namespace storage
storage = SharedObject.getLocal("storage"); // записать данные name => Вася
storage.data.name="Вася"; // сохранить объект
storage.flush()
// перечислить свойства объекта
for (var name in storage.data) {
trace(name + ":" + storage.data[name])
}
Чтобы работать с этим хранилищем из javascript, нужен способ коммуникации JS <->Flash.
В старых версиях Flash вызвать javascript можно через getURL('javascript:...').
Передать значение во Flash можно установкой переменной flash-объекту. Эту переменную flash-ролик может считывать каждый кадр и предпринимать соответствующие действия.
Во Flash 8+ появился интерфейс ExternalInterface, который позволяет как указывать AS-функцию для приема данных из JS, так и напрямую вызывать JS-метод.
Открыть рабочий пример передачи значения Flash <-> JS.
Код примера в ActionScript:
import flash.external.*; // установить местную функцию recieveFromJS для приема данных
// от javascript-функции sendFromJS
ExternalInterface.addCallback("sendFromJS", null, recieveFromJS); // Эта функция будет реагировать на sendFromJS
function recieveFromJS(text) {
_root.theText.text = text; // .. и устанавливать текст в окошке
}
// Это действие, наоборот, отправляет данные в JS.
_root.button.onRelease = function() {
// вызвать javascript-функцию recieveFromFlash
ExternalInterface.call("recieveFromFlash", _root.theText.text); _root.theText.text = "";
}
Код примера в JS:
function recieveFromFlash(Txt) {
document.getElementById('text').value = Txt; }
function sendFromJS() {
var value = document.getElementById('text').value
var movie = (navigator.appName.indexOf("Microsoft")!=-1 ? window : document)["BridgeMovie"]
movie.sendFromJS(value); document.getElementById('text').value = ''
}
Скачать исходники
Документация на ExternalInterface