您在这里面临同源政策问题。iframe
如果它不是来自与父文档相同的域,则您无权访问。你不能改变它的样式,也不能改变 DOM。
但是,如果您能够开发 iframe 指向的 URL 的内容,您可以尝试使用message
事件和postMessage
方法。你的父文件可以做
$('#iframeId').load(function () {
$('#iframeId').get(0).contentWindow.postMessage('requestHeightChange', '*');
});
那么里面的文档iframe
应该监听message
事件
$(window).on('message', function(e) {
var data = e.data;
if (!data) data = e.originalEvent.data;
if ("requestHeightChange" == data) {
window.parent.postMessage("setHeight:" + document.body.offsetHeight, "*");
}
});
您的父文档也应该监听message
事件,因为哪条消息来自哪个 iframe 之间没有区别,您必须在 message 中提供它data
。event.data
是唯一可以发送的数据postMessage
。Parent 的事件侦听器可能如下所示:
$(window).on('message', function(e) {
var data = e.data;
if (!data) data = e.originalEvent.data;
data = data.split(":");
if ("setHeight" == data[0]) {
$('#iframeId').height(data[1] + "px");
}
});
要了解更多信息,postMessage
请参阅MDN。