[英]javascript event.target not working in mozilla
<script type ='javascript'>
function fun(userID) {
var btn = event.target; // error 'event' undefine in mozilla
alert(btn.id);
}
</script>
<asp:linkButton id ="target" style =" cursor:pointer" onclick ="fun('1')" >click here </asp:LinkButton>
我是JavaScript新手,我已經編寫了以上代碼,並且此代碼在Google chrome中可以正常工作,但在Mozilla Firefox中無法正常工作。 誰能建議如何找到控制觸發事件?
將事件傳遞給函數:
<asp:linkButton id ="target" style =" cursor:pointer" onclick ="fun(event, '1')" >click here </asp:LinkButton>
function fun(event, userID)
{
event= event|| window.event;
var btn = event.target;
alert(btn.id);
}
要么
確保您的活動未定義
function fun(userID)
{
var e = event || window.event;
var btn = e.target;
alert(btn.id);
}
如果使用關鍵字this
傳遞按鈕,則無需事件
...onclick="fun(this,1)"
function fun(but, userID) {
var butID=but.id
}
在firefox中未定義event
,因為firefox不具有此屬性,而是可以將事件作為參數提供給事件處理程序函數。
但是,您的代碼可以在Chrome和IE中正常工作
此外,我還將具有類似<script type ='text/javascript'>
<script type ='javascript'>
,而不僅僅是<script type ='javascript'>
要在點擊處理程序中訪問event
,請將其附加在jQuery中而不是HTML中。
HTML:
<a id ="target" style ="cursor:pointer" data-value="1">click here</a>
Javascript:
$(function() {
$("#target").on('click', function(event) {
event.preventDefault();
var btn = this;
var value = $(this).data('value');
alert(btn.id + ', ' + value);
});
});
許多人(包括我自己)都認為這是附加事件處理程序的“正確”方法。 有幾個優點,對事件對象的訪問只是其中之一。
使用arguments [0] .target代替event.target。 大多數瀏覽器都支持事件全局變量,但firefox不支持。 arguments [0]包含所有相同的屬性和函數,但所有瀏覽器均支持。
附帶說明:arguments數組中的索引可以由您自己的代碼更改。 在我當前的項目中,arguments [0]出於某種原因包含了我所有的控制器功能,而全局事件方法和屬性包含在arguments [1]中。 不能完全確定為什么會這樣,但是您可能需要對arguments數組進行一些調試,以查看其包含的值並進行相應的調整。 然而,參數[0]通常應該起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.