Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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 firefox可以';找不到所有其他浏览器都能找到的值_Javascript_Firefox_Cross Browser_Scope - Fatal编程技术网

Javascript firefox可以';找不到所有其他浏览器都能找到的值

Javascript firefox可以';找不到所有其他浏览器都能找到的值,javascript,firefox,cross-browser,scope,Javascript,Firefox,Cross Browser,Scope,Chrome Bar start: 0 Mouse start:undefined Mouse current:undefined IE Bar start: 0 Mouse start:163 Mouse current:165 我不担心IE/Chrome之间的不同值,我可以调试(只是解释鼠标位置的方式),但firefox不选择任何值让我困惑 鼠标位置在事件对象的“clientX”和“clientY”属性中给出,而不是在“x”和“y”中给出。鼠标位置在事件对象的“clientX”和“cli

Chrome

Bar start: 0
Mouse start:undefined
Mouse current:undefined
IE

Bar start: 0
Mouse start:163
Mouse current:165

我不担心IE/Chrome之间的不同值,我可以调试(只是解释鼠标位置的方式),但firefox不选择任何值让我困惑

鼠标位置在事件对象的“clientX”和“clientY”属性中给出,而不是在“x”和“y”中给出。

鼠标位置在事件对象的“clientX”和“clientY”属性中给出,而不是在“x”和“y”中给出

您不想使用
.x
。它不存在于对象上(这就是Firefox没有它的原因),甚至在IE中,它通常也不是你想要的。它是相对于最近的祖先定位的,“定位”的含义可能会有所不同。通常,获取页面相对坐标更好

不幸的是,提供该属性的
pageX
属性也不是标准的事件属性,因此尽管IE9、Firefox、WebKit等都支持该属性,但您不能保证它存在。您可以改为使用
clientX
,它是标准的,但与视口相关,因此要在视口滚动时更正它,您必须添加
documentElement
scrollLeft
(除非您处于IE怪癖模式,在这种情况下,取而代之的是
body
,不要处于怪癖模式!)

(MouseEvent上的另一个标准定位属性是
screenX
,但除了定位弹出窗口外,它基本上是无用的。还有一些非标准属性
offsetX
layerX
,它们甚至更无用。)

最好先测试标准(
evt
不是
未定义的
),然后只返回到IE的
窗口。事件
您不想使用
.x
。它不存在于对象上(这就是Firefox没有它的原因),甚至在IE中,它通常也不是你想要的。它是相对于最近的祖先定位的,“定位”的含义可能会有所不同。通常,获取页面相对坐标更好

不幸的是,提供该属性的
pageX
属性也不是标准的事件属性,因此尽管IE9、Firefox、WebKit等都支持该属性,但您不能保证它存在。您可以改为使用
clientX
,它是标准的,但与视口相关,因此要在视口滚动时更正它,您必须添加
documentElement
scrollLeft
(除非您处于IE怪癖模式,在这种情况下,取而代之的是
body
,不要处于怪癖模式!)

(MouseEvent上的另一个标准定位属性是
screenX
,但除了定位弹出窗口外,它基本上是无用的。还有一些非标准属性
offsetX
layerX
,它们甚至更无用。)


最好先测试标准(
evt
不是
未定义的
),然后只返回到
窗口。事件
对于IEE有人知道为什么X和Y工作吗?这是一款非常有缺陷的产品,但在IE中工作,在chrome中工作100%很好。IE就是IE。chrome(网络工具包)似乎尊重IE的一个不同子集,而不是Firefox。我使用的chrome越多,我对它的印象就越深刻,当IE/FF速度慢时,它在这台电脑上运行得非常好。有人知道为什么X和Y工作吗?这是一款非常有缺陷的产品,但在IE中工作,在chrome中工作100%很好。IE就是IE。chrome(好吧,WebKit)似乎比Firefox更尊重IE的一个子集。我使用chrome越多,我对它的印象就越深刻,当IE/FF慢到+1时,它在这台电脑上运行得非常好,谢谢。正如您在Chrome、IE 8和FF中指出的那样,我对视口进行了实验,但当窗口滚动、调整大小等时,它对clientX/clientY属性没有影响,因此没有发现需要滚动左/上的情况?这就是问题所在,向下滚动时,
clientY
没有什么区别:滚动到页面底部,在视口顶部单击,仍然会得到
clientY==0
。如果要相对于视口定位某个对象(例如具有
位置的元素:fixed
),这很好,但更常见的情况是需要页面相对坐标,在这种情况下,需要进行固定。当然,如果你的主页没有滚动(例如,因为你有一个子元素带有
overflow:scroll
,而不是滚动页面本身),那就没有什么区别了。+1,谢谢。正如您在Chrome、IE 8和FF中指出的那样,我对视口进行了实验,但当窗口滚动、调整大小等时,它对clientX/clientY属性没有影响,因此没有发现需要滚动左/上的情况?这就是问题所在,向下滚动时,
clientY
没有什么区别:滚动到页面底部,在视口顶部单击,仍然会得到
clientY==0
。如果要相对于视口定位某个对象(例如具有
位置的元素:fixed
),这很好,但更常见的情况是需要页面相对坐标,在这种情况下,需要进行固定。当然,如果您的主页没有滚动(例如,因为您有一个子元素具有
overflow:scroll
,而不是滚动页面本身),那么这将不会产生任何影响。
Bar start: 0
Mouse start:163
Mouse current:165
Bar start: 1
Mouse start:3
Mouse current:19
    this.gCurrentMouseX = evt.x;
    if (window.event) {
// Update mouse coords
this.gUpdateMousePos = function(evt) {
    if (evt===undefined) evt= window.event;

    if ('pageX' in evt) {
        this.gCurrentMouseX = evt.pageX;
        this.gCurrentMouseY = evt.pageY;
    } else {
        this.gCurrentMouseX = evt.clientX+document.documentElement.scrollLeft;
        this.gCurrentMouseY = evt.clientY+document.documentElement.scrollTop;
    }
}