使用jQuery在iframe中获取HTML

这里是我的情况。

我有一个名为iframe.html的文件,其中包含图像幻灯片代码
代码有点像

<html>
  <head>
    <!-- Have added title and js files (jquery,slideshow.js) etc. -->
  </head>

  <body>
    <!-- Contains the images which are rendered as slidehow. -->
    <!-- have hierarchy like 'div' inside 'div' etc. -->
  </body>
</html>

用户可以使用嵌入代码幻灯片添加到他们的博客或网站(可以来自不同的域)。假设用户必须在index.html中嵌入幻灯片,他们可以添加以下行:

<iframe id="iframe" src="path_to_iframe.html" width="480" height="320" scrolling="no" frameborder="0"></iframe>

这将使完整的HTML代码从iframe.html到index.html,现在我需要一种方法来访问iframe中的元素来调整它们的一些属性

代码中一样,iframe的宽度和高度由用户设置为某些修复尺寸。我想调整幻灯片(和包含的图像)的大小到iframe容器的大小。什么是最好的方法做到这一点?

我尝试没有成功从像index.html通过index.html访问iframe组件

$('#iframe').contents();

但得到错误

TypeError: Cannot call method ‘contents’ of null

所以,我想在iframe.html中实现逻辑,其中幻灯片应检查父的宽度和高度,并相应地设置其高度。

我很困惑,希望我的问题有意义大多数。请随时提出进一步解释。您的帮助是赞赏。

解决方法

此行将检索框架的整个HTML代码。通过使用其他方法而不是innerHTML,可以遍历内部文档的DOM。
document.getElementById('iframe').contentWindow.document.body.innerHTML

要记住的是,这将工作,只有当帧源在同一个域。如果是来自不同的域,跨站点脚本(XSS)保护将启动。

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...