(可选)尝试根据环境加载<script>

时间:2015-10-04 06:36:49

标签: javascript cordova phonegap-build

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

&#xA;&#xA;

我只想浏览器当我的应用程序被包装为PhoneGap应用程序时,尝试并获取&lt; script src =“cordova.js”&gt;&lt; / script&gt; ,这样它就不会在控制台上显示404网站和扩展,但我不知道如何指定HTML中的&lt; script&gt; 标记周围的条件,或者我将如何检测环境。

&#xA ;&#xA;

我可以检查我是否在PhoneGap环境中使用 if !! window.cordova 但是我不认为我可以访问它,直到我包含 cordova.js 脚本。所以这是一个鸡蛋和鸡蛋的场景。

&#xA;

1 个答案:

答案 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&#34;它(请参阅RequireJS文档),这可能会有点混乱。