使用 dojoConfig $ 加载 jQuery 仍未及时定义
loading jQuery with dojoConfig $ still not defined in time
dojoConfig 是:
<script type="text/javascript">
dojoConfig = {
async: true,
parseOnLoad: false,
packages: [
{ name: 'jquery', location: '//ajax.googleapis.com/ajax/libs/jquery/3.1.1', main: 'jquery.min' },
{ name: 'jqueryui', location: '//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1', main: 'jquery-ui.min' }
]
};
</script>
我正在从谷歌加载:
下面将演示该问题:
<script type="text/javascript">
define.amd.jQuery = true;
require(["jquery", "dojo/domReady!"], function (jquery) {
$(document).ready(function () {
console.log("First ready!"); //works
});
});
$(document).ready(function(){console.log("ready!");});//throws error
</script>
这似乎是一个时间问题,因为 Uncaught ReferenceError: $ is not defined 在写出 "First ready!" 之前被写入控制台。想使用任何一个现成的功能。关于如何解决的任何想法?如果不是,那么我们可以将所有根级 $ 函数包装在 dojo/ready 函数中,虽然有点恶心。
你得到 $ 作为 undefined
因为 jquery 被正确加载并且 cdn 版本 asfaik 不能直接在你的 dojoConfig
.
中使用
要解决这个问题,简单的方法是尝试从 cdn 中包含 jquery,在您的 html <header>
中添加脚本标签,如:
<header>
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</header>
或者您可以尝试将 jquery 作为非 amd 模块加载,如 dojo 文档中所述:
https://dojotoolkit.org/documentation/tutorials/1.10/modules_advanced/
相反,如果您不使用 cdn,您可以尝试以下操作:
<!-- any external libraries configuration included in header -->
<!-- dojo config -->
<script>
var dojoConfig = {
baseUrl: "./",
async: true,
isDebug: true,
parseOnLoad: false,
packages: [
{name: "dojo", location: "libs/dojo"},
{name: "dijit", location: "libs/dijit"},
{name: "dojox", location: "libs/dojox"},
{name: "jquery", location: "libs/jquery", main: "jquery-3.1.1"},
{name: "jqueryui", location: "libs/jquery", main: "jquery-ui-1.12.1"},
]
};
</script>
dojoConfig 是:
<script type="text/javascript">
dojoConfig = {
async: true,
parseOnLoad: false,
packages: [
{ name: 'jquery', location: '//ajax.googleapis.com/ajax/libs/jquery/3.1.1', main: 'jquery.min' },
{ name: 'jqueryui', location: '//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1', main: 'jquery-ui.min' }
]
};
</script>
我正在从谷歌加载:
下面将演示该问题:
<script type="text/javascript">
define.amd.jQuery = true;
require(["jquery", "dojo/domReady!"], function (jquery) {
$(document).ready(function () {
console.log("First ready!"); //works
});
});
$(document).ready(function(){console.log("ready!");});//throws error
</script>
这似乎是一个时间问题,因为 Uncaught ReferenceError: $ is not defined 在写出 "First ready!" 之前被写入控制台。想使用任何一个现成的功能。关于如何解决的任何想法?如果不是,那么我们可以将所有根级 $ 函数包装在 dojo/ready 函数中,虽然有点恶心。
你得到 $ 作为 undefined
因为 jquery 被正确加载并且 cdn 版本 asfaik 不能直接在你的 dojoConfig
.
要解决这个问题,简单的方法是尝试从 cdn 中包含 jquery,在您的 html <header>
中添加脚本标签,如:
<header>
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</header>
或者您可以尝试将 jquery 作为非 amd 模块加载,如 dojo 文档中所述:
https://dojotoolkit.org/documentation/tutorials/1.10/modules_advanced/
相反,如果您不使用 cdn,您可以尝试以下操作:
<!-- any external libraries configuration included in header -->
<!-- dojo config -->
<script>
var dojoConfig = {
baseUrl: "./",
async: true,
isDebug: true,
parseOnLoad: false,
packages: [
{name: "dojo", location: "libs/dojo"},
{name: "dijit", location: "libs/dijit"},
{name: "dojox", location: "libs/dojox"},
{name: "jquery", location: "libs/jquery", main: "jquery-3.1.1"},
{name: "jqueryui", location: "libs/jquery", main: "jquery-ui-1.12.1"},
]
};
</script>