关于javascript:获取iframe中元素的Y位置

Get Y position of an element in an iframe

我认为已经有人问过这个问题,我有一个iframe页面,其中有近10个文本字段,每当用户点击任一文本字段时,我都想知道该页面的Y位置。
有可能吗?


这未经测试,但应该为您指明正确的方向。

jQuery

1
2
3
4
5
6
7
8
9
10
   $(document).ready(function(){
      var iframe = $('iframe');
      var inputs = iframe.find('input');

      $.each(inputs, function(){
        $(this).click(function(){
          console.log($(this).offset().top));
        })
      })
    })

香草Javascript

根据评论进行了更新。也未经测试。

为iframe提供一个ID,以使其更易于定位,然后:

1
2
3
4
5
6
7
8
var iframe = document.getElementById('iframe');
var inputs = Array.prototype.slice.call(iframe.getElementsByTagName('input'));

inputs.forEach(function(input,i){
  input.addEventListener('click', function(){
    console.log(this.getBoundingClientRect().top;
  })
})


如果主窗口和iframe内容都在相同的协议/域中,则可以直接访问iframe的contentBody并获取输入字段的scrollTop位置。

例如:

1
var y = $('iframe').contents().find('#myInputField').offset().top;