【发布时间】:2011-09-16 17:31:51
【问题描述】:
我在 onmouseover 的 javascript 中调用了一个函数。在函数调用中,我包含了 srcElement(它是一个 a-tag)。现在我需要获取该 a-tag 的最近 iframe 的 offsetWidth。但是当我尝试这个时:
alert($(srcElement).closest('iframe').offset().left);
我不确定!这也不起作用:
alert($(srcElement).closest('iframe').attr('title'));
但这有效并返回 iframe 内的主体 id:
alert($(srcElement).closest('body').attr('id'));
这是我在 html 中的函数调用:
showPeopleDetails('User_Matt', event.clientX, event.clientY, event.srcElement);
这是javascript函数:
function showPeopleDetailsNow(UserId, x, y, srcElement){
currentwidth = $(document).width();
currentheight = $(document).height();
adjustwidth = $(srcElement).closest('iframe').offset().left;
adjustheight = $(srcElement).closest('iframe').offset().top;
var calculatedheight = currentheight - adjustheight;
var calculatedwidth = currentwidth - adjustwidth;
现在我正在这样做,但这仅适用于我页面的一部分。因为 id 是由框架动态生成的。
adjustwidth = parent.document.getElementById('ivuFrm_page0ivu0').contentWindow.document.getElementById('ivuFrm_page0ivu2').offsetWidth;
adjustheight = parent.document.getElementById('ivuFrm_page0ivu0').contentWindow.document.getElementById('ivuFrm_page0ivu2').offsetHeight;
有什么方法可以从 body 标签中获取偏移量(它会是 iframe 的正确偏移量吗?我知道我可以获取 body-element 的宽度,但它不准确几个 px ...显然更好的是 Iframe 的正确偏移量! iframe 与原始页面具有相同的端口、协议和主机。我只需要它与 Internet Explorer 8 一起工作。 非常感谢您的帮助!
更新:在 Felix Kling 和 scr4ve 提出解决方案后,我发现我不能使用 body 元素或 html 元素的偏移量!由于两个偏移量都返回 0,我假设 Iframe 元素是 dom 中唯一具有相对于文档的正确偏移量的对象。有什么建议如何获得特定的偏移量?
【问题讨论】:
-
问题是
iframe属于外部文档而不属于内部文档。iframe不存在于内部文档层次结构中,html始终位于顶部。
标签: javascript jquery iframe internet-explorer-8 offset