我使用DNN的客户端资源管理将javascript和css加载到主题(皮肤)中,这样我就可以利用压缩文件和复合文件,但是我需要它们是异步的(非阻塞)。如何才能做到这一点?

最佳答案

据我所知,还没有办法在由客户端资源管理框架呈现的async标记上使用defer(或<script>)属性。
您可以将属性添加到由客户端资源管理框架呈现的<script>(或<link>)标签。将属性HtmlAttributesAsString添加到控件中,然后用冒号(例如,冒号)分隔属性名称和值。 HtmlAttributesAsString="async:true"。需要注意的一件事是,存在一个错误,该错误导致应正确通过逗号分隔的多个属性无法正确呈现(请注意this pull request,它将解决该问题,然后将其集成到DNN中)。

您还可以编写脚本,以便它设置事件处理程序以在页面加载后执行操作(例如,将代码包装在jQuery(function ($) { … });中)

您还可以使用ForceProvider控件上的DnnJsInclude属性将脚本设置为在</form>元素的底部加载,而不是朝<body>的顶部加载(脚本的默认设置)。因此,可能看起来像这样:

<dnn:DnnJsInclude runat="server"
                  PathNameAlias="SkinPath"
                  FilePath="js/theme.min.js"
                  ForceProvider="DnnFormBottomProvider"
                  Priority="10000" />

10-06 04:52