jwPlayer导致渲染不加载到Sitecore';s页面编辑器
我目前正在Sitecore 7.2(MVC)中进行渲染,该渲染将显示给定视频链接的jwPlayer(在媒体库中或来自外部源,如YouTube)。当我通过内容编辑器中的演示详细信息添加渲染(使用有效的数据源)时,一切看起来都很好,工作也很完美。不过,我现在遇到的问题是,当我尝试从页面编辑器(使用完全相同的呈现和数据源)执行相同的操作时,占位符中根本没有显示任何内容 处理视频的渲染部分如下所示:jwPlayer导致渲染不加载到Sitecore';s页面编辑器,sitecore,jwplayer,sitecore7,sitecore7.2,page-editor,Sitecore,Jwplayer,Sitecore7,Sitecore7.2,Page Editor,我目前正在Sitecore 7.2(MVC)中进行渲染,该渲染将显示给定视频链接的jwPlayer(在媒体库中或来自外部源,如YouTube)。当我通过内容编辑器中的演示详细信息添加渲染(使用有效的数据源)时,一切看起来都很好,工作也很完美。不过,我现在遇到的问题是,当我尝试从页面编辑器(使用完全相同的呈现和数据源)执行相同的操作时,占位符中根本没有显示任何内容 处理视频的渲染部分如下所示: @if(Model.VideoLink!=null&&Model.Image!=null) { var
@if(Model.VideoLink!=null&&Model.Image!=null)
{
var vidid=Guid.NewGuid().ToString();
@Html.Raw(Model.Heading)
正在加载播放器。。。
jwplayer(“@vidid”)。设置({
文件:“@Model.VideoLink.Url”,
图片:“@Model.image.Src”,
宽度:“100%”,
观点:“16:9”,
分享:{
链接:“@Model.VideoLink.Url”
},
初级:“闪光”
});
jwplayer('videodiv-@vidid').onPlay(函数(){
$(this.container).最近('.fullbleed video module').find('.video placeholder text').hide();
});
jwplayer('videodiv-@vidid').onPause(函数(){
$(this.container).最近('.fullbleed video module').find('.video placeholder text').show();
});
@可编辑(a=>Model.Description)
}
其他可能有帮助的事情:
- 当我注释掉上面
标记中的所有内容时,渲染会完美地显示出来李> - 页面上有对jwplayer.js的引用(这是我的第一个想法)
在jwplayer.js上找不到合适的玩家并启用了回退功能
uncaughttypeerror:undefined不是
和jwplayer(@vidid”).setup({
从上面开始)jwplayer('videodiv-@vidid')上的函数。onPlay(函数(){
如何让jwPlayer和页面编辑器能够很好地协同工作?我不排除与页面编辑器使用的JQuery版本发生冲突-这通常会把事情弄得一团糟。下面有一篇很好的文章来解决这些问题
问题是,当您通过
页面编辑器
添加组件时,在将div
元素添加到DOM之前会触发脚本。不要问我为什么
解决方案非常简单:使用if
条件包装javascript代码,检查div是否已经存在:
if(document.getElementById(“@vidid”)){
jwplayer(“@vidid”)。设置({
文件:“@Model.VideoLink.Url”,
图片:“@Model.image.Src”,
宽度:“100%”,
观点:“16:9”,
分享:{
链接:“@Model.VideoLink.Url”
},
初级:“闪光”
});
jwplayer('videodiv-@vidid').onPlay(函数(){
$(this.container).最近('.fullbleed video module').find('.video placeholder text').hide();
});
jwplayer('videodiv-@vidid').onPause(函数(){
$(this.container).最近('.fullbleed video module').find('.video placeholder text').show();
});
}
您的代码还存在另一个问题-Guid可以以数字开头,这不是html元素的有效id。您应该将代码更改为:
var vidid=“jwp-”+Guid.NewGuid().ToString();
控制台中有任何Javascript错误吗?您是否使用类似ORM的Glass Mapper…?如果是这样,可能是额外的Sitecore页面编辑器funk输出并绑定以使您的字段值可编辑我正在使用Glass Mapper。控制台中添加了Javascript错误。查看源代码,看看您是否有一大堆
类型元素围绕JSI中的字段,我会看到许多
元素,但在任何JS中都没有。Sitecore使用jQuery的范围应该是$sc
,以避免冲突,但是,是的,不排除这一点,最近这类事情出现了一些问题…+1有趣。使用if
语句包装会不会mply不会导致setup()
函数不启动吗?为什么不使用document.onload
或jquerydocument.ready
来代替呢?是的,if…
会导致setup()
将不会被触发,但只有在页面编辑器中添加组件时才会触发。保存页面时,Sitecore会刷新页面,并且组件已经存在,并且setup()
被正确触发。document.onload
和ready
都可能导致加载视频的延迟。