我创建了自定义DNN模块
我想在其中使用masonry插件
所以在VS的模块项目中,我创建了 Scripts 文件夹并将 JS 文件放在那里。
在ascx文件的视图中我添加了:
<script src="Scripts/jquery.infinitescroll.min.js"></script>
<script src="Scripts/masonry.pkgd.js"></script>
<script src="Scripts/imagesloaded.js"></script>
但是当我在控制台中加载页面eith模块时,我得到:
GET http://dnn7site/resources/shared/scripts/jquery/jquery.min.map 404 (Not Found) Masonry:457
GET http://dnn7site/jquery.min.map 404 (Not Found) Masonry:464
GET http://dnn7site/Demos/Scripts/masonry.pkgd.js 404 (Not Found) Masonry:751
GET http://dnn7site/Demos/Scripts/imagesloaded.js 404 (Not Found) Masonry:752
GET http://dnn7site/Demos/Scripts/jquery.infinitescroll.min.js 404 (Not Found)
在DNN中添加和设置脚本的相对路径的方法是什么?
答案 0 :(得分:2)
您应该使用客户端依赖框架在DotNetNuke中包含脚本(DNN 6.1+中添加了功能)。它将控制优先级并允许框架将脚本组合在一起以获得更高效的有效负载。
信息的维基条目在这里:
http://www.dnnsoftware.com/wiki/Page/Client-Resource-Management-API
从本质上讲,它就像这样简单:
<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>
<dnn:DnnJsInclude runat="server" FilePath="~/Resources/Shared/Scripts/jquery/jquery.hoverIntent.min.js" />
如果您想通过代码执行此操作,请尝试以下操作:
RegisterStyleSheet(Page page, string filePath) //default provider and default priority
答案 1 :(得分:2)
对于我的自定义模块中的脚本或css,我通常将调用ClientResourceManager放入我的控件的PreRender事件中。我使用ControlPath获取模块控件的相对路径以引用脚本。例如:
protected override void OnPreRender(EventArgs e)
{
ClientResourceManager.RegisterStyleSheet(this.Page, this.ControlPath + "css/view.css");
ClientResourceManager.RegisterScript(this.Page, this.ControlPath + "js/view.js");
}
答案 2 :(得分:0)
根据Masonry getting started documentation:
上的说明,尝试包含资源文件的完整路径在您的网站中加入Masonry脚本。
<script src="/path/to/masonry.pkgd.min.js"></script>
例如:
<script src="/desktopmodules/com.demo.masonry/Scripts/jquery.infinitescroll.min.js"></script>
<script src="/desktopmodules/com.demo.masonry/Scripts/masonry.pkgd.js"></script>
<script src="/desktopmodules/com.demo.masonry/Scripts/imagesloaded.js"></script>