Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何申请';偏移量';到iframe中的元素?_Javascript_Jquery_Iframe - Fatal编程技术网

Javascript 如何申请';偏移量';到iframe中的元素?

Javascript 如何申请';偏移量';到iframe中的元素?,javascript,jquery,iframe,Javascript,Jquery,Iframe,我想使用jQuery.animate从iframe外部的链接导航到iframe内部的div。 这是我使用的代码: function scrollToAnchorIframe(aid){ var aTag = window.frames['myFrame'].document.getElementById(aid); $('html,body').animate({scrollTop: aTag.offset().top - 62},'slow'); } 但是,它不起作用,记录错误“Ob

我想使用
jQuery.animate
从iframe外部的链接导航到iframe内部的div。 这是我使用的代码:

function scrollToAnchorIframe(aid){
  var aTag = window.frames['myFrame'].document.getElementById(aid);
  $('html,body').animate({scrollTop: aTag.offset().top - 62},'slow');
}
但是,它不起作用,记录错误“
Object[Object HTMLElement]没有方法“offset”
”。有没有办法获得id的偏移量以使其正常工作

更新(已解决): 这就是我现在使用的代码:

function scrollToAnchorIframe(aid){
  var aTag = window.frames['myFrame'].document.getElementById(aid);
  jQuery('html,body').animate({scrollTop: $(aTag).offset().top + $("#myFrame").offset().top - 62},'slow');
}

aTag
是DOM元素,将其设为jQuery对象

$('html,body').animate({scrollTop: $(aTag).offset().top - 62},'slow');

如果将iframe放在容器框中,那么这里有一个更新,以便从父页面容器上/下导航到iframe的书签锚(注意:“window.frames”与FF browser存在已知的兼容性错误,因此我将改用“contentWindow”):

因此,当我们从父HTML调用函数时,向上/向下滚动取决于iframe当前位置:

 <a onclick="iframeBookmark('iframeBookmarkID')">...</a>
。。。

…其中“iframeBookmarkID”是iframe页面中书签锚的ID。

由于对象不是jQuery对象,因此出现该错误。这是一个HTMLElement。尝试
$(aTag).offset()
或包装
窗口.frames['myFrame'].document.getElementById(aid)
$()
中请注意,除非您使用相同的协议在同一域上工作,否则无法使用X-Frame编程。谢谢!这就成功了。下面是我现在使用的完整代码:
函数scrollToAnchorIframe(aid){var aTag=window.frames['myFrame'].document.getElementById(aid);jQuery('html,body').animate({scrollTop:$(aTag.offset().top+$(“#myFrame”).offset().top-62},'slow');}
 <a onclick="iframeBookmark('iframeBookmarkID')">...</a>