Javascript 在连接速度较慢的某些环境中找不到该功能
Javascript function not found on certain environments having slow connectivity
以下是我的 MVC 应用程序中的确切场景:
有一个页面 (cshtml) 有网格。在该网格的每一行中,我们都有一个按钮。单击该按钮假设会打开一个弹出窗口(这是一个局部视图)。此部分视图包含一个 Kendo 网格,为了将通用行为应用于我们应用程序中的所有 Kendo 网格,我们创建了一个 javascript 库 (CustomGrid.js),它被捆绑在“~/JavaScript/CustomGrid”包内。
Bundle 渲染代码放在局部视图的顶部:
@Scripts.Render("~/JavaScript/CustomGrid")
在部分视图中,我们正在创建一个 Kendo 网格及其列和所有内容。以下 javascript 写在页面底部,以便将常见行为应用于该网格。
<script type="text/javascript" language="Javascript">
$(document).ready(function () {
//Bind plugin
var objGrid = $('#historyTrackGridDiv').setupGrid({
loadDefaultView: false,
allowPaging: true,
allowViews: false,
allowColumnHideShow: false,
allowSaveAs: false,
allowRefresh: false,
pageSize: [10, 25, 50, 100, 200]
});
});
</script>
这适用于开发环境以及本地托管的少数测试环境。但是从特定测试环境访问该站点时会出现以下错误:
Uncaught TypeError: $(...).setupGrid is not a function
at HTMLDocument.eval (eval at (jquerypackage?v=23.0-b68:1),
这个函数和 bundle 在应用程序的许多其他地方使用,在那里工作得很好。但是,该问题仅出现在一个特定页面中,并且在托管在特定环境中时也会出现。
我们知道这些环境很慢,加载包可能需要更多时间,并且 document.ready() 会在包加载之前被调用。
我们尝试使用 window.onload,但是因为我们已经有了 load() 事件,所以我们不能将这段代码放在那个事件中。我也无法在父页面中呈现此包,因为它与该页面中已经使用的其他一些 javascript 文件冲突。
知道如何解决这个问题吗?
按照 Stephen 的建议,我已将脚本从局部视图移动到父视图,之后我可以看到 java 脚本在尝试执行它们之前已加载到所有环境中,而不管连接速度如何。
以下是我的 MVC 应用程序中的确切场景:
有一个页面 (cshtml) 有网格。在该网格的每一行中,我们都有一个按钮。单击该按钮假设会打开一个弹出窗口(这是一个局部视图)。此部分视图包含一个 Kendo 网格,为了将通用行为应用于我们应用程序中的所有 Kendo 网格,我们创建了一个 javascript 库 (CustomGrid.js),它被捆绑在“~/JavaScript/CustomGrid”包内。
Bundle 渲染代码放在局部视图的顶部:
@Scripts.Render("~/JavaScript/CustomGrid")
在部分视图中,我们正在创建一个 Kendo 网格及其列和所有内容。以下 javascript 写在页面底部,以便将常见行为应用于该网格。
<script type="text/javascript" language="Javascript">
$(document).ready(function () {
//Bind plugin
var objGrid = $('#historyTrackGridDiv').setupGrid({
loadDefaultView: false,
allowPaging: true,
allowViews: false,
allowColumnHideShow: false,
allowSaveAs: false,
allowRefresh: false,
pageSize: [10, 25, 50, 100, 200]
});
});
</script>
这适用于开发环境以及本地托管的少数测试环境。但是从特定测试环境访问该站点时会出现以下错误:
Uncaught TypeError: $(...).setupGrid is not a function at HTMLDocument.eval (eval at (jquerypackage?v=23.0-b68:1),
这个函数和 bundle 在应用程序的许多其他地方使用,在那里工作得很好。但是,该问题仅出现在一个特定页面中,并且在托管在特定环境中时也会出现。
我们知道这些环境很慢,加载包可能需要更多时间,并且 document.ready() 会在包加载之前被调用。
我们尝试使用 window.onload,但是因为我们已经有了 load() 事件,所以我们不能将这段代码放在那个事件中。我也无法在父页面中呈现此包,因为它与该页面中已经使用的其他一些 javascript 文件冲突。
知道如何解决这个问题吗?
按照 Stephen 的建议,我已将脚本从局部视图移动到父视图,之后我可以看到 java 脚本在尝试执行它们之前已加载到所有环境中,而不管连接速度如何。