gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:44:58 25 4
gpt4 key购买 nike

我有一个应用程序,其中包含网站、Chrome 扩展程序和 PhoneGap/Cordova Android 应用程序,所有这些都基于相同的代码库。

我希望浏览器仅尝试获取 <script src="cordova.js"></script>当我的应用程序被包装为 PhoneGap 应用程序时,它不会在网站和扩展程序的控制台中显示 404,但是我不确定如何在 <script> 周围指定类似的条件HTML 中的标记,或者我将如何检测环境。

我可以通过 if !!window.cordova 检查我是否处于 PhoneGap 环境中但是我认为在包含 cordova.js 之前我无法访问它脚本。所以这是一个先有鸡还是先有蛋的情况。

最佳答案

模块加载器将为您做这种事情。展望 future ,我建议使用 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 包装器,或“填充”它(请参阅 RequireJS 文档),这可能会有点困惑。

关于javascript - (可选)尝试根据环境加载 &lt;script&gt;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32930746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com