我有一个应用程序,它是一个基于相同代码库的网站,Chrome扩展程序和PhoneGap / Cordova Android应用程序。


我只想浏览器当我的应用程序被包装为PhoneGap应用程序时,尝试并获取< script src =“cordova.js”>< / script>
,这样它就不会在控制台上显示404网站和扩展,但我不知道如何指定HTML中的< script>
标记周围的条件,或者我将如何检测环境。
我可以检查我是否在PhoneGap环境中使用 if !! window.cordova
但是我不认为我可以访问它,直到我包含 cordova.js
脚本。所以这是一个鸡蛋和鸡蛋的场景。
答案 0 :(得分:1)
模块加载器会为你做这种事情。展望未来,我建议使用SystemJS来实现这一目的,因为它是一个支持ES6所有光荣功能的现代模块加载器,如果你是这样的话。
替代方案是RequireJS,其中有一个名为Almond的轻量级替代品,它可能更适合您的要求,因为它很小而且您只需要它来加载单个模块。您可能想要从RequireJS开始,然后在一切正常的情况下将其与Almond交换。
使用RequireJS / Almond语法,您的条件脚本加载器看起来像这样。请注意,因为脚本是异步加载的,所以使用脚本的代码需要在脚本加载后触发的require()回调中执行:
if (window.shouldLoadCordovaScript) {
// Requiring 'cordova' fetches ./cordova.js
require(['cordova'], function (cordova) {
// code that uses cordova
});
}
如果Cordova脚本没有正确支持异步模块加载,或者它支持CommonJS环境而不支持AMD等,你可能仍会遇到一些障碍,在这种情况下你需要预先捆绑一个带有AMD包装的版本,或者#34; shim"它(请参阅RequireJS文档),这可能会有点混乱。