手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆

参考:getBoundingClientRect方法

首页 > Javascript >

看到getBoundingClientRect方法,是用phpstorm进行跳转的,跳转到原始文件中,居然提示我是@browser IE,@return TextRange
一下子就闷了,还好有google,找到了一篇 文章(不好意思,不是专业做前端的,对于这些函数所以都不太了解,也没有去看什么 w3cschool之类的教程)
找到了这篇 文章才知道:

http://younglab.blog.51cto.com/416652/386540
  1. /** 
  2.  * 这原本是IE中获取页面中某个元素位置的方法 ,【相对于浏览器左上角】 
  3.  * FF在3.0中也提供这个方法,在3.5还能获取元素高度和宽度属性 
  4.  * IE中会比其他浏览器多出2个像素 
  5.  * return{left,top,right,bottom,width,height} 
  6.  */  

OK,我也不多介绍了,看一下原文中对于这一点是怎么解释的:

XML/HTML代码
  1. 页面左上角由一个元素,紧贴浏览器的左边和上边,在除IE外的浏览器,包括基于IE内核的搜狗浏览器(360垃圾浏览器及TT浏览器未测试)都能正确的获取到各个属性的值,而在IE中,每个值都会比正常值多出两个像素,例如,正常的left值为0,在IE中为2;  
  2.   
  3. 这是因为IE中document.documentElement.clientTop并不为0(尽管已设置html、body的margin和padding为0),所以在IE中获得的值要减去document.documentElement.clientTop的值。  

更多的资料还是去看原文吧:http://younglab.blog.51cto.com/416652/386540




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

3条记录访客评论

这是一个比较常见的问题哦,特别是在判断boolean时更容易出现:
if ($var)

if ($var === TRUE)
有时候结果会很意外的。

Post by qkboy on 2011, August 22, 10:45 AM 引用此文发表评论 #1

如果路径中有一个点呢?怎么办?

Post by gouki on 2011, August 19, 10:42 PM 引用此文发表评论 #2

function my_realpath($url)
{
   $url = explode('/', $url);
   $keys = array_keys($url, '..');

   foreach($keys as $k => $v)
   {
       array_splice($url, $v - ($k * 2 + 1), 2);
   }

   $url = implode('/', $url);
   $url = str_replace('./', '', $url);
   return $url;
}

$url = 'http://neatstudio.com/xxx/xxx/../0/abc.jpg';
echo my_realpath($url);

Post by fifsky on 2011, August 19, 2:32 PM 引用此文发表评论 #3


发表评论

评论内容 (必填):