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