var x = event.target||event.srcElement;
document.getElementById(x.id).style.left = 200 + "px" ;
document.getElementById(x.id).style.top = 100 + "px" ;
在谷歌浏览器和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上运行
答案 0 :(得分:43)
确保将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" ;
}
答案 1 :(得分:1)
我使用Jquery解决了我的问题。例如,要获取可以使用的元素的ID:
var x = $(this).attr('id');
答案 2 :(得分:0)
此解决方案也适用于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
的全局变量。