2

我在生产环境中收到来自 JavaScript 的间歇性错误,并希望了解有关加载过程的更多信息。

错误很简单,可以理解:

“剑道”未定义。

它指出该kendo变量在我尝试使用它时未定义。但是,我将所有的 JavaScript 代码都包装在一个 jQueryready事件中,就像这样......

<head>
   <script src="path/to/jQuery.js"></script>
</head>
<body>
   <!-- ... -->

   <script>
     jQuery(function ($) {
       var test = new kendo.data.DataSource({
         // datasource options
       });
     });
   </script>

   <!-- ... -->

   <script src="path/to/kendo.js"></script>
</body>

我的印象是,这样做jQuery(function() { ... });会导致内部代码在 DOM 准备好之后运行,并且只有在所有<script>标签都被解析和处理后才会运行。

不是这样吗?我应该将我的代码添加到loaded事件而不是ready事件中吗?

FWIW,我们正在使用 Cloudflare 处理缩小和缓存,间歇性行为似乎只与 IE 有关。但是,我无法复制该问题,我只是在我们的一个页面无法完成加载时收到通知,并且我看到控制台出现了这个未定义的错误。再次导航到该页面没有问题,所以我有点困惑。有任何想法吗?

此外,我的代码中没有看到任何对 jQuery 或 kendo 库的重复引用。

4

1 回答 1

0

以这种方式使用它...

<head>
   <script src="path/to/jQuery.js"></script>
</head>
<body>
   <!-- ... -->

   <script src="path/to/kendo.js"></script>
   <script>
     jQuery(function() {
       var test = new kendo.data.DataSource({
         // datasource options
       });
     });
   </script>

   <!-- ... -->

</body>
于 2017-03-20T16:16:20.933 回答