SharePoint debug : launchPoint given is already associated with a callout

今天在写SharePoint 2013 callout的时候,发现浏览器报了一个错误:calloutManager: launchPoint given is already associated with a callout

代码很简单:

    var calloutElement = document.getElementById(divId);

    var calloutOptions = new CalloutOptions();
    calloutOptions.ID = 'calloutid';
    calloutOptions.launchPoint = calloutElement;
    calloutOptions.beakOrientation = 'leftRight';
    calloutOptions.content = 'This is Callout Description';
    calloutOptions.title = 'This is Callout Title';
    CalloutManager.createNew(calloutOptions);
  

错误信息很明显,应该是我重复向一个div绑定callout引起的,最简单的解决办法是try catch捕获这个异常:

try
{
    CalloutManager.createNew(calloutOptions);
}
catch(e)
{}

然后我查看了一下CalloutManager的代码,发现可以使用这个方法判断一个div是否已经绑定了一个callout:

var callout = CalloutManager.getFromLaunchPointIfExists(launchPoint);
方法getFromLaunchPointIfExists的参数launchPoint就是div对象,如果返回值callout不为空,就说明这个div已经绑定了callout了。

除此之外,CalloutManager其实已经提供了一个方法处理重复绑定的问题,这个方法是createNewIfNecessary,这个方法会首先使用getFromLaunchPointIfExists方法判断div上是否已经绑定了callout,如果已经绑定,就不会再次绑定了,所以正确的代码是使用createNewIfNecessary而不是createNew:

    var calloutElement = document.getElementById(divId);

    var calloutOptions = new CalloutOptions();
    calloutOptions.ID = 'Calloutid';
    calloutOptions.launchPoint = calloutElement;
    calloutOptions.beakOrientation = 'leftRight';
    calloutOptions.content = 'This is Callout Description';
    calloutOptions.title = 'This is Callout Title';
    CalloutManager.createNewIfNecessary(calloutOptions);

这样就不会出现异常信息了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值