如果 swf 不是 body 的直接子元素,
获得 offset 在IE下,是相对于 父元素的,而不是相对于body的。
导致 iframe 的位置错误。
修改了 IFrameExternalCalls.as 中的代码 ,采用 jquery 计算 offset .
public static var INSERT_FUNCTION_MOVEIFRAME:String =
"document.insertScript = function () " +
"{ " +
"if (document." + FUNCTION_MOVEIFRAME + "==null) " +
"{ " +
FUNCTION_MOVEIFRAME + " = function(frameID,iframeID,x,y,w,h,objectID) " +
"{" +
"var frameRef = document.getElementById(frameID); " +
"var swfObject = document.getElementById(objectID); " +
"var offset = jQuery(swfObject).offset();"+
"frameRef.style.left = x + offset.left + 'px'; " +
"frameRef.style.top = y + offset.top + 'px'; " +
"frameRef.style.width = w + 'px'; " +
"frameRef.style.height = h + 'px'; " +
"var iFrameRef = document.getElementById(iframeID); " +
"iFrameRef.width = w;" +
"iFrameRef.height = h;" +
"}" +
"}" +
"}";
转载:http://hzlinux.blog.bokee.net/bloggermodule/blog_viewblog.do?id=8158999
本文解决了一个在特定条件下iframe显示位置不正确的问题。当SWF文件不是body的直接子元素时,在IE浏览器中获取的偏移量是相对于父元素而非body。通过修改IFrameExternalCalls.as中的代码,并使用jQuery来计算正确的偏移量。
1473

被折叠的 条评论
为什么被折叠?



