尝试通过跨域调整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中编辑页面时,我不明白它为什么会起作用,但是当我检查它时突然发生了。有没有人见过这种行为或者能以某种方式启发我?
答案 0 :(得分:0)
也许你应该在这里请求帮助是SharePoint子网站https://sharepoint.stackexchange.com/。在编辑模式下工作但不在视图中的脚本是常见的失败。