如何在 DNN 客户端资源管理中使用异步(非阻塞)javascript

How to use asynchronous (non-blocking) javascript with DNN Client Resource Management

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

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

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

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

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