zoukankan      html  css  js  c++  java
  • 用 Javascript 获取指定页面元素的位置


    function getElementPos(elementId) {

     

    var ua = navigator.userAgent.toLowerCase();

    var isOpera = (ua.indexOf('opera') != -1);

    var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

     

    var el = document.getElementById(elementId);

     

    if(el.parentNode === null || el.style.display == 'none')

    {

    return false;

    }

     

    var parent = null;

    var pos = [];

    var box;

     

    if(el.getBoundingClientRect) //IE

    {

    box = el.getBoundingClientRect();

    var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);

    var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);

     

    return {x:box.left + scrollLeft, y:box.top + scrollTop};

    }

    else if(document.getBoxObjectFor) // gecko

    {

    box = document.getBoxObjectFor(el);


    var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;

    var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;

     

    pos = [box.x - borderLeft, box.y - borderTop];

    }

    else // safari & opera

    {

    pos = [el.offsetLeft, el.offsetTop];

    parent = el.offsetParent;

    if (parent != el) {

    while (parent) {

    pos[0] += parent.offsetLeft;

    pos[1] += parent.offsetTop;

    parent = parent.offsetParent;

    }

    }

    if (ua.indexOf('opera') != -1

    || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))

    {

    pos[0] -= document.body.offsetLeft;

    pos[1] -= document.body.offsetTop;

    }

    }


    if (el.parentNode) { parent = el.parentNode; }

    else { parent = null; }


    while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')

    { // account for any scrolled ancestors

    pos[0] -= parent.scrollLeft;

    pos[1] -= parent.scrollTop;


    if (parent.parentNode) { parent = parent.parentNode; }

    else { parent = null; }

    }

    return {x:pos[0], y:pos[1]};

    }
  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Hadoop综合大作业
    hive基本操作与应用
    用mapreduce 处理气象数据集
    熟悉常用的HBase操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    获取全部校园新闻
  • 原文地址:https://www.cnblogs.com/niuniu502/p/778553.html
Copyright © 2011-2022 走看看