任何方式将Sencha Touch应用程序打包为谷歌Chrome打包应用程序?

时间:2015-10-08 15:39:48

标签: javascript extjs google-chrome-extension sencha-touch

我有一个Sencha Touch应用程序。现在需要将其作为Google Chrome应用分发。我将ST生产版本包装为Google Chrome扩展程序,并在控制台中收到了几条错误消息:

  1. index.html具有内联脚本(ST microloader注入它),但Google Chrome应用中不允许使用内嵌脚本。这似乎可以通过在单独的文件中移动脚本来解决。有更好的解决方法吗?
  2. window.localStorage不可用,我被迫使用chrome.storage但应用程序主动使用localStorage。 localStorage是同步的,chrome.storage是异步的。我是否需要编写自己的ST适配器才能使用chrome.storage,还是有更好的方法吗?现有的图书馆?
  3. EvalError:拒绝将字符串评估为JavaScript,因为'unsafe-eval'不是以下内容安全策略指令中允许的脚本源:“default-src'self'blob:filesystem:chrome-extension-resource: ”。我无法找到这个问题的确切来源......
  4. 我想我会得到更多其他问题,当这些问题得到修复后,应用可以继续进行......
  5. 主要问题是Sencha Touch(不是ExtJS)可以用于谷歌Chrome应用程序,或者它肯定是错误的,不应该?如果Sencha Touch只是Google Chrome应用程序的糟糕解决方案,我是否需要在此停止?

1 个答案:

答案 0 :(得分:1)

  1. 单独的js文件是最佳解决方案,否则您将拥有to sandbox the entire page

      

    您无法在Chrome应用页面中使用内联脚本。 [...] Chrome扩展程序可让您放宽默认的内容安全政策; Chrome应用不会。

  2. 通过以这种方式制作localStorage包装,您可以比prefs更好:

    • 将应用启动时chrome.storage的设置加载到内部对象
    • 关注chrome.storage.onChanged事件监听器中的后续动态更改,该监听器将更新内部对象并向您的应用广播settingChanged事件。
    • prefs.set方法中将值都放入内部对象和chrome.storage
  3. 您使用的某些js库中必须有eval。最好的解决方案是重构代码以摆脱eval,否则沙箱页面,请参阅Using eval in Chrome Extensions. Safely.
  4. 我没有使用Sencha Touch,所以我不能说它是否容易修改或是否值得努力。
    尝试在他们的支持论坛上询问。