我使用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" />