[英]event.target on Firefox
var x = event.target||event.srcElement;
document.getElementById(x.id).style.left = 200 + "px" ;
document.getElementById(x.id).style.top = 100 + "px" ;
在 Google Chrome 和 IE 上工作正常,但在 Firefox 上不工作。 在谷歌上试过。 谷歌说event.srcElement
(适用于 IE 但不适用于 Firefox)所以我添加了event.target
但仍然无法正常工作。 要在 Firefox 上工作,我还需要做其他更改吗? 顺便说一下,我使用的是 3.5 版的 Firefox。
function up()
{
dragok = false;
document.onmousemove = null;
var x = event.target||event.srcElement;
document.getElementById(x.id).style.left= 200 + "px" ;
document.getElementById(x.id).style.top= 100 + "px" ;
}
请帮助我使其在 Firefox 上运行
确保将event
定义为处理程序的形式参数。
IE
是全局定义的, Chrome
两个地方都定义了,所以两种方式都可以,但Firefox
只将其定义为函数参数。
function up( e ) {
// ^-----------------------------------------------------+
if( !e ) e = window.event; // <---needed this --- and this ->--+
dragok = false;
document.onmousemove = null;
var x = e.target||e.srcElement; // <--- and these
document.getElementById(x.id).style.left= 200 + "px" ;
document.getElementById(x.id).style.top= 100 + "px" ;
}
我使用 Jquery 解决了我的问题。 例如,要获取元素的 id,您可以使用:
var x = $(this).attr('id');
此解决方案也适用于 Firefox 浏览器。 当开始keydown
操作时,它将event
属性设置为这样的全局变量。
var keyEvent=null;
将该event
属性分配给keyEvent
并且.item
是目标元素。
$(document).on("keydown",'.item', function(e){
keyEvent=e;
},this))
然后。在您的代码中使用keyEvent
。
function up( e ) {
if( !e ) e = keyEvent;
dragok = false;
document.onmousemove = null;
var x = e.target||e.srcElement;
document.getElementById(x.id).style.left= 200 + "px" ;
document.getElementById(x.id).style.top= 100 + "px" ;
}
注意:不要尝试将event
属性设置为window
全局变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.