問題タブ [attachevent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - JavascriptでaddEventHandlerを使用する安全で普遍的な方法は?
この問題の詳細に入る前に、状況を明確にしたいと思います。私たちの Web 分析会社は大規模なサイトのコンサルタントとして働いており、(SCRIPT タグを 1 つ追加する以外に) ページ自体を制御することはできません。
既存のスクリプトは、ページ上の「新しい」(addEventListener または attachEvent) ハンドラーを完全に認識しない「古い」方法 (element.onclick = blah; の派手なバージョンで、元のハンドラーも実行する) を使用してハンドラーをインストールします。これを修正して、多くのカスタム開発を必要とせずにスクリプトをより多くのサイトで実行できるようにしたいと考えています。
ここで最初に考えたのは、独自のスクリプトで addEventListener/attachEvent を使用することでしたが、これには問題があります。クライアントのサイトで「古い」方法を使用してハンドラーを設定すると、「新しい」方法でインストールしたハンドラーが消去されます。すべてのブラウザーをテストしたわけではありませんが、簡単で汚いテストでは、IE7 と FF3 の両方でこれが発生することが示されています。また、ページのイベント ハンドラーが既に設定されている後に「新しい」方法を使用すると、それらのハンドラーが消去される可能性があるというリスクもあります。
だから私の質問は、ページ上の他のイベントハンドラーがどのようにインストールされているかに関係なく機能する addEventListener/attachEvent を使用して Javascript でイベントハンドラーを追加するために使用できる安全な手法は何ですか?
覚えておいてください: スクリプトがインストールされているサイトを変更する方法はありません。(このような質問に対するデフォルトの答えは常に「すべてを同じように書き直すだけです」であるため、強調しなければなりません。)
javascript - addEventListener()/ attachEvent()の正しい使用法?
addEventListener
それぞれattachEvent
正しく使用する方法を知りたいですか?
また
?
このクロスブラウザは安全ですか、それとも次のようなものを使用する方がよいでしょうか。
AND:Saymyfunc2
はIE7専用です。それに応じて正しい/好ましい方法を変更するにはどうすればよいですか?
javascript - クロスブラウザー イベント処理
イベント ハンドラーを登録するためのクロスブラウザー機能と、(ほぼ) 一貫したハンドラー エクスペリエンスが必要です。jQuery などのライブラリの全重量や機能は必要ないので、独自のライブラリを作成しました。以下のコードで目標を達成したと思います。これまでのところ、テストは成功していますが、あまりにも長い間見つめていました。私のロジックに欠けている欠陥や落とし穴はありますか?
EDIT 1:明確にするために、ブラウザの意図で各ブロックにコメントを付けました。IE ブロックを更新して、すぐに呼び出さないようにしました ( Andy E の鋭い目 のfunc
おかげです)。
編集 2:func.call()
のthis
代わりに で呼び出すように IE ブロックを更新しましelem
た。
編集 3:「良い部分」でJSLintを渡すように更新されました。
javascript - javascriptで親フレームの要素にイベントを添付するにはどうすればよいですか?
エディターのリンク要素に「onclick」イベントを追加したいと考えています。
これは私がしました:
しかし、うまくいきません。これを IE で動作させたいのですが、Javascript を使用しています。誰がそれの何が悪いのか知っていますか?
ありがとう
javascript - ローカル変数を使用して無名関数を名前付き関数に渡すときのJavascriptのスコープの問題
タイトルについて申し訳ありません-私はそれを表現する方法を理解できませんでした。
シナリオは次のとおりです。
要素を構築する関数があります:
buildSelect内では、次のことを行います。
次のような配列もあります。
これらすべてを考えると、これを行うコードがいくつかあります。
問題は、これらの選択の1つでonchangeが起動されると、CallBack()に正しく移動しますが、最初のパラメーターが正しくないことです。たとえば、3番目の選択を変更すると、CallBack()がxs [2]で呼び出されることを期待します。代わりに、xs[3]などのさまざまなものを取得します。
これに少し変更すると:
CallBack()でまだ間違った値を取得しています。これはスコープ/クロージャーに関連しているとのことですが、何がわからないようです。
最初の選択で、最初のパラメーターをxs [0]として、2番目の選択でxs [1]を使用して、onchangeのCallBackを呼び出すようにします。ここで何が間違っているのでしょうか?
xsがグローバル変数であることを明確にする必要があります。
ありがとう
internet-explorer - JSを介してIEの要素にイベントを添付し、オブジェクト自体を渡す
ページ上の各 INPUT 要素をループするときに呼び出される JS のビットがあります。
優れたブラウザでは、本来の機能を果たします。各要素にフォーカスおよびぼかしイベント リスナーをアタッチし、トリガーされると、オブジェクトとそれをトリガーしたイベントを関数 'toggleHelpText' に渡します。
ただし、IEは機能しません。IE では、イベント リスナーがアタッチされているすべてのフィールドに、ループ内の最後のオブジェクトのみを参照するオブジェクト 'thisField' があります。
つまり、3 つの入力フィールドがある場合、適切なブラウザーは、field1、field2、および field3 をそれぞれ「this」として渡すフォーカス イベントを呼び出します。
IE では、フォーカス イベントをトリガーするときに、3 つのフィールドすべてが field3 をオブジェクトとして渡します。
解決策はありますか?
また、IE でエラーが発生するためだけに、次の構文オプションを試しました。
javascript - これに代わるJavascript(IE)
私は次のコードのようなものを持っています:
単純化されていますが、基本的にはdiv内に4つのiframeが作成され、完全に読み込まれたときに、各フレームのIDに基づいていくつかのアクションを実行する必要があります。それはうまく機能しますが、問題はIEにあります。IEはこれを演算子として認識していないため、内部のフレームのIDにアクセスできません。IEに使用できる代替手段はありますか?
助けてくれてありがとう!
Abhijit:実際、コード全体は次のようになっています。
したがって、すべてのブラウザで機能するはずです。
javascript - addEventListener を attachEvent に変換する Javascript
次のコードは、Javascript 関数を標準に準拠した素敵な方法で呼び出しています:)。イベントリスタナーがその甥に関連付けられているため(より良い用語が必要なため)、関数に送信する必要があることに注意してくださいelementsList[i]
( this キーワードは適切ではありません)
このややこじれたコードは、elementsList[i] 内の現在のノードの動的な動作のためのコントロール要素を効果的に見つけ、そこにクリック イベント リスナーを追加します。起動されると、クリックされたノードがトグル関数に渡されます。
問題は、IE8 以下ではまったく機能せず、午前中のほとんどを回避策を見つけようとしているにもかかわらず、ボールをプレーさせることができないということです。誰かがこれを IE crapo コードに変換する方法を知っているなら、私はそれを見て感謝します.
javascript - ループ内のjavascript attachEvent
以下のコードをループ内で使用しています。IE を使用していない限り、機能します。
jquery - 「オンザフライで作成された」コントロールへの JQuery イベントのアタッチ
ページ内の既存の div に追加しています。追加されたテキストには、文字列内の html コードが含まれています。問題は、ページに追加した後にクリックを追加すると、イベントが機能しないことです。Jquery はページの読み込み時にコントロールを読み込み、イベントを再び攻撃するために何かをしなければならないと思います。