postMessage与Sharepoint iframe调整大小无法正常工作

时间:2016-05-30 09:00:58

标签: javascript iframe sharepoint postmessage

尝试通过跨域调整Sharepoint环境中的iframe时遇到问题。我尝试过在网上找到的一系列解决方案,除了Baker Humadi关于postMessage的解决方案之外什么都没有用:

https://stackoverflow.com/a/15558627/2171556

我在Sharepoint页面添加了一个脚本编辑器,其中包含以下内容(我的iframe URL当然指向我的子页面):

<script>
// Create IE + others compatible event handler
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {
    document.getElementById('frame').height = e.data + 'px';
},false);
</script>

<iframe id="frame" src="childpage" scrolling="no"></iframe>

在子页面上我已经包含以下内容(RestSection正在通过其他方式填充,所以请忽略此帖子中的内容):

<script type="text/javascript">
window.onload = function()
{
    var actual_height = document.getElementById('RestSection').scrollHeight;
    parent.postMessage(actual_height,"childpage"); 
    //* allows this to post to any parent iframe regardless of domain
}
</script>

<div id="RestSection">
    //List of things
</div>

当我在Sharepoint中编辑代码片段时,它实际上正在调整页面的大小。当我检查它停止工作时,我注意到高度设置很奇怪 - 也许是一些postMessage对象?:

<iframe id="frame" src="childpage" scrolling="no" height="{"command":"RequestSuccess","requestIndex":1,"result":null}px"></iframe>

当我在Sharepoint中编辑页面时,我不明白它为什么会起作用,但是当我检查它时突然发生了。有没有人见过这种行为或者能以某种方式启发我?

1 个答案:

答案 0 :(得分:0)

也许你应该在这里请求帮助是SharePoint子网站https://sharepoint.stackexchange.com/。在编辑模式下工作但不在视图中的脚本是常见的失败。