您的位置:首页 > 其它

SharePoint debug : launchPoint given is already associated with a callout

2014-10-25 00:23 357 查看
今天在写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);


这样就不会出现异常信息了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐