<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fwolf's Blog &#187; jQuery - Fwolf's Blog</title>
	<atom:link href="http://www.fwolf.com/blog/post/tag/jquery/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fwolf.com/blog</link>
	<description>随心·随意·随缘·努力～</description>
	<lastBuildDate>Wed, 07 Jul 2010 07:07:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>[Js]如何取鼠标的当前位置/坐标</title>
		<link>http://www.fwolf.com/blog/post/111</link>
		<comments>http://www.fwolf.com/blog/post/111#comments</comments>
		<pubDate>Sat, 24 Dec 2005 11:45:49 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Web Frontend]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[mouse]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=111</guid>
		<description><![CDATA[一般在Javascript中，我们用event.clientX来取当前鼠标在文档中的坐标，用event.ScreenX来去当前鼠标在屏幕中的坐标。但是，在Mozilla系列浏览器中，直接使用event是不行的，会提示说event没有定义，因此在Mozilla或Firefox中调用时，需要变通一下。 在调用函数的时候，始终传一个event参数进去，在Mozilla中，会将Event对象传进去，而在IE下默认就有Event对象，也不冲突，这个问题就解决了。 以下这个例子就能够在IE和Mozilla中都正常运行。 当前鼠标坐标为： X： Y： < ![CDATA[//> < !]]&#62; 源代码： &#60;pre onmousemove=&#8221;DisplayMp(event)&#8221; class=&#8221;code&#8221;&#62; 当前鼠标坐标为： X：&#60;span id=&#8221;mp_x&#8221;&#62;&#60;/span&#62; Y：&#60;span id=&#8221;mp_y&#8221;&#62;&#60;/span&#62; &#60;/pre&#62; &#60;script type=&#8221;text/javascript&#8221;&#62; &#60;!&#8211;//&#8211;&#62;&#60;![CDATA[//&#62; &#60;!-- /** * 显示/隐藏指定的对象(style.display方式) * @param object event 事件，用于捕捉鼠标位置等，可省略 */ function DisplayMp(event) { document.getElementById('mp_x').innerHTML = event.clientX + 'px'; document.getElementById('mp_y').innerHTML = event.clientY + 'px'; } // end of function DisplayMp //--&#62;&#60;!]]&#62; &#60;/script&#62; 另外取到鼠标的坐标，赋值给style.top等属性的时候，后面需要加上单位，不然也会提示错误。下面就是一个正确的例子： [...]]]></description>
			<content:encoded><![CDATA[<p>一般在Javascript中，我们用event.clientX来取当前鼠标在文档中的坐标，用event.ScreenX来去当前鼠标在屏幕中的坐标。但是，在Mozilla系列浏览器中，直接使用event是不行的，会提示说event没有定义，因此在Mozilla或Firefox中调用时，需要变通一下。</p>

<p>在调用函数的时候，始终传一个event参数进去，在Mozilla中，会将Event对象传进去，而在IE下默认就有Event对象，也不冲突，这个问题就解决了。</p>

<p>以下这个例子就能够在IE和Mozilla中都正常运行。</p>

<p><pre onmousemove="DisplayMp(event)" class="code">
当前鼠标坐标为：
X：<span id="mp_x"></span>
Y：<span id="mp_y"></span></pre></p>

<script type="text/javascript">
<!--//-->< ![CDATA[//>
<!--
/**
 * 显示/隐藏指定的对象(style.display方式)
 * @param   object  event   事件，用于捕捉鼠标位置等，可省略
 */
function DisplayMp(event)
{
    document.getElementById("mp_x").innerHTML = event.clientX + "px";
    document.getElementById("mp_y").innerHTML = event.clientY + "px";
} // end of function DisplayMp
-->< !]]&gt;
</script>

<p></p>

<p>源代码：</p>

<div class="code">
&lt;pre onmousemove=&#8221;DisplayMp(event)&#8221; class=&#8221;code&#8221;&gt;
当前鼠标坐标为：
X：&lt;span id=&#8221;mp_x&#8221;&gt;&lt;/span&gt;
Y：&lt;span id=&#8221;mp_y&#8221;&gt;&lt;/span&gt;
&lt;/pre&gt;

&lt;script type=&#8221;text/javascript&#8221;&gt;
&lt;!&#8211;//&#8211;&gt;&lt;![CDATA[//&gt;
&lt;!--
/**
 * 显示/隐藏指定的对象(style.display方式)
 * @param   object  event   事件，用于捕捉鼠标位置等，可省略
 */
function DisplayMp(event)
{
    document.getElementById('mp_x').innerHTML = event.clientX + 'px';
    document.getElementById('mp_y').innerHTML = event.clientY + 'px';
} // end of function DisplayMp
//--&gt;&lt;!]]&gt;
&lt;/script&gt;
</div>

<p>另外取到鼠标的坐标，赋值给style.top等属性的时候，后面需要加上单位，不然也会提示错误。下面就是一个正确的例子：</p>

<div class="code">
obj.style.top = event.clientX + 10 + &#8216;px&#8217;;
</div>

<p>See Also:</p>

<ul>
<li><a href="http://dudu.cnblogs.com/archive/2005/02/17/105400.html">Firefox中Javascript使用event对象需要注意的问题</a></li>
<li><a href="http://www.gtalbot.org/DHTMLSection/WindowEventsNS6_ZH.html">&#8220;糊涂博士&#8221;的窗口属性方法事件网页</a></li>
</ul>

<h4>Update @ 2007-03-29</h4>

<p>如果在js中使用<code>html_obj.onclick = function () { some_action uses Event }</code>这类语法时，如果遇到<code>Event</code>，注意<code>Event</code>最好大写，不然不会生效。</p>

<h4>Update @ 2008-05-18</h4>

<p>似乎找到最终的优秀解决方法了，首先用一句话解决event对象的兼容性：</p>

<pre><code>if (!e) var e = window.event;
</code></pre>

<p>同时在调用函数的时候，如果没有显式传递Event，它会自动赋值。同时还找到取鼠标位置更兼容的方法：</p>

<pre><code>if (e.pageX || e.pageY) {
    posx = e.pageX;
    posy = e.pageY;
}
else if (e.clientX || e.clientY) {
    posx = e.clientX + document.body.scrollLeft
        + document.documentElement.scrollLeft;
    posy = e.clienty + document.body.scrollTop
        + document.documentElement.scrollTop;
}
</code></pre>

<p>结合起来，用jQuery调用的例子：</p>

<pre><code>$("#showhide_svninfo").mouseover(function(e) {
    SwitchDisplay('#svninfo', 'block', e);
});
</code></pre>

<p>这样综合下来，兼容性就非常好了。不过本文中的例子我没有再按照这个改，好像在IE下又不灵光了。</p>

<p>参考：<a href="http://www.quirksmode.org/js/events_properties.html">Event properties</a></p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/event" title="event" rel="tag">event</a>, <a href="http://www.fwolf.com/blog/post/tag/jquery" title="jQuery" rel="tag">jQuery</a>, <a href="http://www.fwolf.com/blog/post/tag/js" title="js" rel="tag">js</a>, <a href="http://www.fwolf.com/blog/post/tag/mouse" title="mouse" rel="tag">mouse</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/252" title="自己写js代替手工点击 (2006-11-06)">自己写js代替手工点击</a> (0)</li>
	<li><a href="http://www.fwolf.com/blog/post/203" title="用js丰富你的书签功能 (2006-07-23)">用js丰富你的书签功能</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/401" title="新的广告交换、51.la统计和web标准 (2008-05-06)">新的广告交换、51.la统计和web标准</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/312" title="CSS裸奔节之强制脱衣 (2007-04-05)">CSS裸奔节之强制脱衣</a> (3)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/111/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
