[英]how to determine an event which triggered an inline function with a real parameter in the Firefox?
此函數在許多標簽中聲明為內聯: <i onClick="noteFc('someNoteText1')"> ... <i onClick="noteFc('someNoteText2')"> ...
使用不同的注釋文本進行調用,具體取決於打電話的地方。
function noteFc(str){
var bubble = window.event.srcElement.getElementsByTagName('i')[0];
diff=...
bubble.style.left = diff + "px";
}
我的代碼在Chrome中運行,但是FF在函數中讀取了“ undefined” window.event
,在函數體中FF event
對象不可見,因此應該通過函數的顯式參數傳遞事件,這對我來說意味着所有的函數內聯聲明(調用?)都應在所有源代碼中onClick=noteFc(event, "someNoteTextN");
為onClick=noteFc(event, "someNoteTextN");
但是在Chrome中使用這種編碼,事件對象的概念有所不同,該怎么辦? 元素的目標就足夠了,因此調用可以是onClick=noteFc(this, "someNoteTextN");
可能在任何地方都可以使用,但是添加也需要大量工作,從而導致了更大,更復雜的源代碼。 在函數noteFc(str)
嗅探變量this
導致了一條盲路,因為FF將[object Window]
放到了這個全局變量中,這與Chrome的值[mouseEvent]
相反–有什么方法可以區分這些值嗎? 另外,我看不到如何從FF的整個[object Window]
中挖掘單擊的元素。
我已經在網上搜索了許多小時,但是我發現只有FF本身將事件作為隱藏參數傳遞給了事件的語句(內聯中沒有參數聲明,定義中僅包含了參數)。 不幸的是,所有找到的示例都沒有傳遞任何真實參數。 如果將顯式實參傳遞給函數該怎么辦? 在這種情況下,隱式傳遞給函數的事件在哪里? arguments[0]
包含str
(顯式文本參數),而arguments[1]
未定義。 是否有任何直接方法(為了簡便起見,最好在函數主體中讀取全局變量)來確定觸發Firefox中帶有實參的內聯函數的事件(目標已足夠)?
(除jQuery之外的其他方式。)
編輯:由於讀者的提及而添加了引號。
你要:
<i onClick="noteFc(event, 'someNoteText1')">
“ event”參數傳遞給從屬性編譯的事件處理程序,但是由處理程序決定是否將其傳遞給它調用的noteFc函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.