我使用 FlashDevelop(Flash Builder 的免费替代品),它使用 Adobe 的(最新)开源 Flex 框架。
我也想为 Android 和 iOS 开发一个应用程序。在某些部分,我使用 StageWebView 来显示我不想重写为 flex AS3 代码的内容。
简而言之:我处于开发的早期阶段,这是我的第一个 flex 移动应用程序。在某些部分,它使用 HTML5 功能“localStore”(javascript 中对象窗口的一部分)来存储一些数据。但是好像flex的webkit浏览器没有这个功能?我还想知道这是否是典型的 flex 问题,还是在部署应用程序时也存在?在移动设备上加载 HTML 部分时不会出现此问题(例如在移动 Safari 中)。
此外,当 localStorage 功能不可用时,它会切换回 cookie。但这也无法正常工作。在所有其他浏览器中都没有问题,即使在 IE 中也是如此。饼干的结果:varname=undefined; expires=Thu, 03 May 2012 01:01:41 GMT.
到底是怎么回事?
这是一些Javascript代码:
// Picked up from: https://github.com/carhartl/jquery-cookie
// Usage: http://www.electrictoolbox.com/jquery-cookies/
jQuery.cookie = function (key, value, options) {
// key and at least value given, set cookie...
if (arguments.length > 1 && String(value) !== "[object Object]") {
options = jQuery.extend({}, options);
if (value === null || value === undefined) {
options.expires = -1;
}
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setDate(t.getDate() + days);
}
value = String(value);
return (document.cookie = [
encodeURIComponent(key), '=',
options.raw ? value : encodeURIComponent(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// key and possibly options given, get cookie...
options = value || {};
var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};
本地存储:
jQuery.locstore = function(key, val, opt ) {
var ls = window.localStorage,
j = window.JSON,
b = !( !ls || !j );
if( !b )
{ return jQuery.cookie( key, val, opt ); }
// set
if( arguments.length > 1 )
{
var bRem = (val == null ),
v = (bRem || typeof val == 'number' || typeof val == 'string')?val:j.stringify(val);
if( bRem )
{ b = ls.removeItem(key); }
else { b = ls.setItem(key, v); }
return b;
}
// get
var v = ls.getItem(key);
if( v != null && typeof val != 'number' )
try { v=j.parse(v); } catch(e){}
return v;
};
我在这里问它,因为我没有在网上找到答案。也许有人给我一个线索来解决这个问题的正确方向?