昨天一天弄了獲取iframe高度的js。firefox,ie是正常的,chrome時而正常,時而不正常。今天看了半天發現了問題,chrome是正確的,嚴謹的。
1 var frameObj = document.getElementById("frameObj").contentDocument || document.getElementById("frameObj").contentWindow.document, 2 mainWrapHeight = $(window).height() - 49 - 21, 3 frame_height = frameObj.documentElement.scrollHeight; 4 $("#frameObj").height( frame_height < 610 ? mainWrapHeight : frame_height);
在chrome下時而報 uncaught TypeError:cannot read property “scrollHeight”of null (無法讀取scrollHeight)。
一直以為chrome不支持scrollHeight 引起,后來各種測試發現,不是的。
最后發現是很多頁面加載的順序引起的,很多時侯iframe並沒有加載,但js已經實現,對象都找不到,屬性值鐵定讀取不到了。
所以改成下面的就可以了,加載完再執行js
1 $("#frameObj").on("load",function(){//iframe加載完后 高度自適應。 2 var frameObj = document.getElementById("frameObj").contentDocument || document.getElementById("frameObj").contentWindow.document, mainWrapHeight = $(window).height() - 49 - 21, 3 frame_height = frameObj.documentElement.scrollHeight; 4 $("#frameObj").height( frame_height < 610 ? mainWrapHeight : frame_height); 5 }); 6
剛開始做前端,各種的忽略,就寫個日志強化下記憶。