asp-fallback-test for loading jquery.unobtrusive-ajax.js



我正在构建一个ASP-NET CORE 3.1 MVC Web应用程序。我希望使用 CDNJS 网络提供我的脚本资源文件,并且由于这是一个生产应用程序,因此当 CDN 可能脱机时,我必须回退到本地副本。这是一个相当基本的任务,我可以成功加载多个库,如Bootstrap 4.5,jQuery 3.3等。

您可能知道,ASPNET 核心脚本标记助手具有内置的出色功能,可以自动执行我想执行的操作。尝试加载jquery.unobtrusive-ajax.min.js时,我无法确定我的回退测试功能实际上应该是什么。这?????下面代表我无法工作的代码。

基本上,我需要编写在 CDN 不可用时返回false的 JS 代码。此代码将插入到?????.

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajax-unobtrusive/3.2.6/jquery.unobtrusive-ajax.min.js"
asp-fallback-src="~/lib/jquery-ajax-unobtrusive/jquery.unobtrusive-ajax.js"
asp-fallback-test="window.jQuery && ?????">
</script>

据我所知,回退测试属性是一个用于回退测试的 Javascript 表达式。如果主脚本成功加载,则应解析为 true。

检查jquery.validate.unobtrusive.js后,我们可以发现它依赖于jQuery.validatorjs。

所以我建议你可以添加下面的表达式:

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajax-unobtrusive/3.2.6/jquery.unobtrusive-ajax.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
>
</script>

在寻找相同答案时刚刚发现了这篇文章。

我发现

asp-fallback-test="getEvents($(document)[0]).submit"

工作,其中 getEvents 定义如下(从 https://stackoverflow.com/a/12899236/4254458 开始(

function getEvents(element) {
var elemEvents = $._data(element, "events");
var allDocEvnts = $._data(document, "events");
for (var evntType in allDocEvnts) {
if (allDocEvnts.hasOwnProperty(evntType)) {
var evts = allDocEvnts[evntType];
for (var i = 0; i < evts.length; i++) {
if ($(element).is(evts[i].selector)) {
if (elemEvents == null) {
elemEvents = {};
}
if (!elemEvents.hasOwnProperty(evntType)) {
elemEvents[evntType] = [];
}
elemEvents[evntType].push(evts[i]);
}
}
}
}
return elemEvents;
}

您还可以使用以下方法:

<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"  
asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"  
asp-fallback-test="window.jQuery && window.jQuery.validator"  
crossorigin="anonymous"  
integrity="sha384-Fnqn3nxp3506LP/7Y3j/25BlWeA3PXTyT1l78LjECcPaKCV12TsZP7yyMxOe/G/k">  
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"  
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"  
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"  
crossorigin="anonymous"  
integrity="sha384-JrXK+k53HACyavUKOsL+NkmSesD2P+73eDMrbTtTk0h4RmOF8hF8apPlkp26JlyH">  

最新更新