0

この関数は、多くのタグでインラインで宣言されて<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"; 
} 

window.event私のコードはChromeで動作しますが、FFは関数で読んだ「未定義」と言い、FFeventオブジェクトは関数本体に表示されないため、関数の明示的なパラメーターを介してイベントを渡す必要があります。つまり、すべてのインライン宣言(関数の呼び出し?) は、すべてのソース コードで書き直す必要があります onClick=noteFc(event, "someNoteTextN"); が、イベント オブジェクトの概念が異なる Chrome でのこのコーディングはどうでしょうか? 要素のターゲットは十分であるため、呼び出しはonClick=noteFc(this, "someNoteTextN"); おそらくどこでも機能しますが、追加も手間がかかり、ソース コードがかさばって複雑になります。Chrome の値とは逆に、FF がこのグローバル変数に入れるためthis、関数内の変数のスニッフィングnoteFc(str)は盲目的な通りにつながりました[object Window][mouseEvent]– そのような値を区別する方法はありますか? [object Window]さらに、 FF全体からクリックされた要素をマイニングする方法がわかりません。

私は何時間もネットを検索しましたが、FF自体が隠し引数としてイベントを渡したというステートメントしか見つかりませんでした(インラインでパラメーター宣言なし、定義内の単独のパラメーターのみ)。残念ながら、見つかったすべての例には、実際の引数が渡されていません。明示的な実数パラメーターを関数に渡す場合はどうなりますか? そのような場合、イベントは暗黙のうちに密かに関数に渡されますか? (明示的なテキスト パラメータ) をarguments[0]含み、未定義です。Firefox で実際のパラメーターを使用してインライン関数をトリガーしたイベント (ターゲットで十分) を特定するための直接的な方法 (関数本体でグローバル変数を読み取るのが最適です) はありますか?strarguments[1]

(jQuery以外の方法です。)


編集済み: 読者の言及により引用が追加されました。

4

1 に答える 1

0

あなたがしたい:

<i onClick="noteFc(event, 'someNoteText1')">

「イベント」引数は、属性からコンパイルされたイベント ハンドラーに渡されますが、呼び出した noteFc 関数にそれを渡すかどうかは、ハンドラーが決定します。

于 2013-11-12T03:22:40.143 に答える