我怎样才能使event.srcElement在Firefox中工作,这是什么意思?

在我公司的网站上有一个if语句,使得一个网页与firefox不兼容

if(event.srcElement.getAttribute("onclick") == null){ ...code.. document.mainForm.submit(); } 

我已经评论了if语句的条件,现在又和forefox一起工作了。 我的问题是,什么是event.srcElement.getAttribute(“onclick”),这是重要的,它会在将来引起问题。 还有,有什么类似的,我可以取代条件,以便它在Firefox上工作?

编辑:

  function gotoRDManagerPT(PTId, bDDetailId) { if(!proceed()) return false; var target = event.target || event.srcElement; if(event.target.getAttribute("onclick") == null) { document.mainForm.displayRDManagerPT.value = "true"; document.mainForm.PTId.value = PTId; document.mainForm.bDDetailId.value = bDDetailId; document.mainForm.submit(); } } 

srcElement是最初来自IE的专有财产。 标准化的财产是target

 var target = event.target || event.srcElement; if(target.onclick == null) { // shorter than getAttribute('onclick') //... document.mainForm.submit(); } 

还可以看看quirksmode.org –更多跨浏览器信息的事件属性


关于这个问题在做什么:

event.target / event.srcElement包含对引发event的元素的引用。 getAttribute('onclick') == null检查是否通过内联事件处理将单击事件处理程序分配给元素。

是不是重要? 我们不能说,因为我们不知道...code..在做什么。

在IE中,事件对象已经在窗口对象中可用; 在Firefox中,它作为parameter passing给事件处理程序。

JavaScript的:

 function toDoOnKeyDown(evt) { //if window.event is equivalent as if thie browser is IE then the event object is in window //object and if the browser is FireFox then use the Argument evt var myEvent = ((window.event)?(event):(evt)); //get the Element which this event is all about var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); //To Do --> } 

HTML:

 <input type="text" id="txt_Name" onkeydown="toDoOnKeyDown(event);"/> 

正如你注意到当我们在html中调用函数时,为了防止浏览器是Firefox,我们添加了一个参数event

我已经读过一篇文章,说IE中的事件对象叫做window.event ,在Firefox中我们必须把它作为参数。

如果你需要将它附加在代码中:

 document.getElementById('txt_Name').onkeydown = function(evt) { var myEvent = ((window.event)?(window.event):(evt)); // get the Element which this event is all about var Element = ((window.event)?(event.srcElement):(evt.currentTarget)); // To Do --> };