项目中很多的地方都要用到iframe框架,但是irrame高度让人很纠结啊,在以前的项目中使用过纯css实现、JQuery实现自适应高度等方法。
但都不是很理想,JQuery实现的已经很完美了,但是IE10中链接不能频繁的点击,会报一个没有权限的错误。
JQuery代码如下:
1 2 3 4 5 6 7 8 9 10
| window.setInterval("reinitIframe()", 500); function reinitIframe() { var iframe = $("#myiframe"); if (iframe.length > 0) { var hheight = iframe.contents().find("html").height(); var bheight = iframe.contents().find("body").height(); iframe.height(hheight > bheight ? hheight : bheight); } }
|
JS代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| window.setInterval("reinitIframe()", 500);
function reinitIframe() { var myIframe = document.getElementById("myiframe"); try { var hheight = myIframe.contentWindow.window.document.documentElement.offsetHeight; var bheight = myIframe.contentWindow.window.document.body.scrollHeight; if (isIE()) { myIframe.height = Math.max(hheight, bheight); } else { myIframe.height = Math.min(hheight, bheight); } } catch (ex) {} }
function isIE() { if (!!window.ActiveXObject || "ActiveXObject" in window) { return true; } else { return false; } }
|
完成,应该还有更完美的决解方法!
2017年07月15日 更新
我又在琢磨这个事情,我发觉不是JQuery的原因,在项目中使用了一段js方法来设置iframe的src,原生js方式,如下:
1 2 3 4
| function iframeTo(url){ var myIframe = document.getElementById('myiframe'); myIframe.src = url; }
|
改成JQuery获取,可以完美解决这个问题
1 2 3 4 5
| function iframeTo(url){ $('#myiframe').attr('src', url); }
|
但是我现在没搞明白这是为啥?