0

在请求调整 Web 部件属性 > 外观 > Chrome 类型设置为无的应用部件的大小时,我遇到了 iframe postMessage 通信的错误。

依赖于存在的 Web 部件标题的主机端 postMessage 处理程序中的 JavaScript 错误:

TypeError: document.getElementById(...) is null
document.getElementById(webPartDivId + '_ChromeTitle').style.cssText = widthCssText;

我发现这里记录了这一点,但没有提供解决方法:

http://yuriburger.net/2013/04/27/errors-resizing-a-sharepoint-2013-app-part-client-web-part/

我尝试覆盖添加到应用程序部分的 SPAppIFramePostMsgHandler,但我认为范围不允许。或者至少我不确定为什么,但它还没有工作。

有谁知道解决这个问题的方法?

谢谢!

4

2 回答 2

0

我将使用修改后的 SPAppIFramePostMsgHandler 函数在现场注册脚本操作,在这种情况下,我将调用它 mod_SPAppIFramePostMsgHandler 并添加它

setTimeout(function(){
  if(typeof SPAppIFramePostMsgHandler == "undefined")
    return;
  if (typeof window.addEventListener != 'undefined') {
    window.removeEventListener('message',SPAppIFramePostMsgHandler);
    window.addEventListener('message', mod_SPAppIFramePostMsgHandler, false);
  }
  else if (typeof window.attachEvent != 'undefined') {
    window.detachEvent('onmessage', SPAppIFramePostMsgHandler);
    window.attachEvent('onmessage', mod_SPAppIFramePostMsgHandler);
  }
}, 200);

没试过,但如果有帮助的话。

于 2013-05-24T07:25:27.277 回答
0

事实证明,此错误已在 3 月 12 日的 SharePoint Server 更新中得到解决:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;2767999

于 2013-05-25T01:53:30.573 回答