我正在开发一个AIR应用程序,它生成一个动态客户端表示,从PHP框架API中提取所有必要的数据。在此过程中,我下载了大量图像并将其本地存储在用户的app-storage(air.File.applicationStorageDirectory)中。
旁注:我动态填充的HTML视图位于IFRAME沙箱中。
我有一个解析脚本,它尝试获取JSON数据并使用必要的字段填充页面。其中许多字段都是我需要本地引用的图像。我以为我可以使用<img src="app-storage:/path/to/img.jpg">
简单地生成URL,但它似乎并没有真正加载图像。我的猜测是AIR不会动态处理app-storage:
个url引用。有解决办法吗?我可以使用jQuery和load()
吗?
以下是我正在使用的当前代码无效:
var pos = filename.lastIndexOf(".");
if (pos != -1) {
ext = filename.substr(pos + 1, filename.length);
switch (ext) {
case 'gif':
case 'jpg':
case 'jpeg':
case 'png':
default:
// update the source value
$field.attr('src', 'app-storage:' + filename);
break;
}
}
我认为我可能在正确的轨道上,因为
的返回结果air.File.applicationStorageDirectory('test')
是app-storage:/test
非常感谢任何帮助!
答案 0 :(得分:1)
最终解决方案是我必须正确设置IFRAME以获得应用程序安全级别访问权限,授予其正确使用句柄app-storage
URL的权限。对于那些有兴趣了解如何执行此操作的人来说,第一步是直接将IFRAME文件加载到应用程序的主目录中:
<iframe id="childFrame" src="child.html" documentRoot="app:/" allowcrossDomainxhr="true" width="100%" height="100%"></iframe>
此沙箱的主要区别在于不具有参数sandboxRoot
。
值得注意的是,在我的任何测试过程中,我从未遇到任何安全错误。似乎AIR本身没有正确处理app-storage URL。
答案 1 :(得分:0)
人talking比您需要在那里允许安全策略。