首先,我在阅读并应用了很多JS我发布此问题之后,就此主题进行了研究,
我正在尝试应用iframe,其中我从其他域获取内容。
我试图在iframe内容的滚动高度的基础上设置iframe高度,但未能这样做
我试图使用iframe的onload事件但是失败了......
请帮助我,我需要动态设置任何必要的iframe的高度..
如果代码将在Javascript中提供,对我有帮助
提前致谢
答案 0 :(得分:2)
出于安全原因,无法与其他域中的框架进行交互。
这包括衡量其内容。
答案 1 :(得分:1)
@SLaks是正确的。如果iframe内容位于其他域中,则无法直接访问其内容。
你可以做什么(以及我最近刚刚做的)是设置一个代理,通过cURL拉取内容(在PHP中,但我确定任何服务器端语言都有相同的东西)。 iframe内容然后在同一页面上,您可以通过以下方式访问它的高度:
var _iframeHeight = $('#iframe').contents().find('body').height();
$('#iframe').height(_iframeHeight);
我也忘了提及(@SLaks感谢提醒)您必须检查所有脚本/样式/图像标签并检查/添加绝对URL。代理可能会变得相当棘手,但它会完成它。
答案 2 :(得分:1)
如果您能够更改iframe中的内容,例如,如果您是作者或可以联系该iframe内容的作者,则可以设置双iframe技巧,将iframe的高度发送到您的主页。
以下是如何实现的目标:
AAA.com/mainpage.htm
)中放置了一个iframe(BBB.com/mainframe.htm
)。AAA.com/heightproxy.htm
)您认为BBB.com/mainframe.htm
会在AAA.com/heightproxy.htm
内部创建一个不可见的iframe。
结果: BBB.com/mainframe.htm
on on onload事件可以加载iframe AAA.com/heightproxy.htm
,并在URL中添加一些参数。例如,它可以将新的高度/宽度放入参数中。此外,AAA.com/heightproxy.htm
可以访问AAA.com/mainpage.htm
中的所有JS功能 - 因为它们位于相同的浏览器窗口中并共享相同的域。这样它就可以将收到的宽度和高度重定向到主页。
免责声明:只有在您可以修改需要包含的iframe来源时才能使用此技巧。
答案 3 :(得分:0)
如果从不同的网址加载内容,则无法与iFrame交互主页(您可以从iframe测量高度,但无法将其传递到主页)。 可以通过简单的代理脚本加载内容来覆盖它。