簡體   English   中英

如何確定在Firefox中使用實際參數觸發內聯函數的事件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM