作业帮 > 综合 > 作业

如何获取页面iframe元素内容的高、宽?

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/14 18:31:56
如何获取页面iframe元素内容的高、宽?
我用contentDocument获取到iframe内容的对象,按照w3school上面说,就可以用任何操作DOM的方法操作iframe内容了,但是我安装搜索到的方法根本就获取不到内容的高和宽,返回的都是0
如何获取页面iframe元素内容的高、宽?
这种方法是对的,不过前提是:你必须有足够权限访问 iframe Docuemnt —— 同域
例如,index.html 和 my_frame.html 都在同一域名下,或都在桌面,这样可以
但如果你把 iframe 的 src 换为百度网址,就会出现类似下面的错误
Permission denied to access property 'getElementById'
无权访问 'getElementById' 属性
如果你的情况是后者,那就没有解决办法.如果是前者,可能你的代码中有错误.
再问: 我目前是同域的,没有报权限错误,我弹出来获取到的高度都是0。怎么搞?
再答: 你可以用下面这两个文件测试 【index.html】 window.onload = function() { var frm = document.getElementById("f"); var frmDoc = frm.contentDocument; var sample = frmDoc.getElementById("sample"); // 输出高度:200px alert(sample.style.height); }; 【frame.html】 frame sample text
再问: 我不是要获取某个元素的高、宽,我是要获取整个文档的高、宽。
再答: var frm = document.getElementById("f"); var frmDoc = frm.contentDocument; alert(frmDoc.body.clientHeight);
再问: 我之前就试过了这个,返回0,还有办法吗?
再答: contentDocument 不是兼容的写法,应该是 frm.contentWindow.document var frm = document.getElementById("f"); var frmDoc = frm.contentWindow; alert(frmDoc.document.body.clientHeight);
再问: 结果还是0,用contentWindow得到的是window的对象,用contentDocument得到的是HTML Document对象,结果都是得到的是0,咋办?
再答: 我在 IE6-9,FF,Chrome 都测试了,没有问题 contentWindow.document = contentDocument 把你代码贴出来看看吧,或者私信
再问: 和你的一模一样,我的firefox20.0 window.onload = function(){ var ifm = document.getElementsByTagName("iframe")[0]; var con = ifm.contentWindow; alert(con.document.body.clientHeight); }