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



我有一个Sencha Touch应用程序。现在有必要将其作为Google Chrome应用程序分发。我将ST生产构建包装为Google Chrome扩展,并在控制台上得到几个错误消息:

  1. index.html有内联脚本(ST microloader注入它),但内联脚本是不允许在谷歌Chrome应用程序。这似乎可以通过将脚本移动到单独的文件中来解决。有没有更好的解决方法?
  2. 窗口。localStorage不可用,我被迫使用chrome。但应用程序会主动使用localStorage。localStorage是同步的,chrome。存储是异步的。我需要写自己的ST适配器使用铬。存储还是有更好的方法?现有的库?
  3. EvalError:拒绝将字符串计算为JavaScript,因为'unsafe-eval'在以下内容安全策略指令中不允许使用脚本源:" default-src 'self' blob: filesystem: chrome-extension-resource:"我无法找到这个问题的确切来源…
  4. 我想我会得到更多的其他问题,当这些问题将被修复,应用程序可以继续下一步…

主要问题是Sencha Touch(不是ExtJS)可以用于谷歌Chrome应用程序,或者它绝对是错误的,不应该?如果Sencha Touch只是谷歌Chrome应用程序的坏解决方案,我需要停在这里吗?

  1. 一个单独的js文件是最好的解决方案,否则你将不得不沙箱整个页面:

    你不能在Chrome App页面中使用内联脚本。[…Chrome扩展会让你放松默认的内容安全策略;

  2. 你可以做一个比localStorage更好的prefs包装器:

    • 加载设置从chrome.storage在应用程序启动到一个内部对象
    • 观察chrome.storage.onChanged事件监听器的后续动态变化,它将更新内部对象并广播settingChanged事件到您的应用程序。
    • prefs.set方法中的值同时放入内部对象和chrome.storage中。
  3. 在你使用的一些js库中必须有eval。最好的解决方案是重构代码以摆脱eval,否则沙箱页面,参见在Chrome扩展中使用eval。安全。

我没有使用过Sencha Touch,所以我不能说修改它是否容易,或者是否值得。
你也可以去他们的支持论坛问问。

最新更新