jwPlayer导致渲染不加载到Sitecore';s页面编辑器

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

我目前正在Sitecore 7.2(MVC)中进行渲染,该渲染将显示给定视频链接的jwPlayer(在媒体库中或来自外部源,如YouTube)。当我通过内容编辑器中的演示详细信息添加渲染(使用有效的数据源)时,一切看起来都很好,工作也很完美。不过,我现在遇到的问题是,当我尝试从页面编辑器(使用完全相同的呈现和数据源)执行相同的操作时,占位符中根本没有显示任何内容

处理视频的渲染部分如下所示:

@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的引用(这是我的第一个想法)
Javascript中的控制台错误:

  • 在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
或jquery
document.ready
来代替呢?是的,
if…
会导致
setup()
将不会被触发,但只有在页面编辑器中添加组件时才会触发。保存页面时,Sitecore会刷新页面,并且组件已经存在,并且
setup()
被正确触发。
document.onload
ready
都可能导致加载视频的延迟。