8

HTML、JS でカスタム イベントを作成しようとしています。

<input type="text" oncustombind="foo(event);" />

どうすればそのようなものを作成できますか? 「oncustombind」は、作成したいカスタム イベントです。oncustombind 属性で定義された関数/コードを呼び出すことができるはずです。また、イベント オブジェクトにデータを渡す必要があります。

jquery、YUI などのライブラリは使用したくありません。

どんな助けでも大歓迎です。

4

2 に答える 2

11

CustomEventが必要です

簡単に操作できるはずですが、ブラウザーのサポートは貧弱です。ただし、DOM-shimはそれを修正する必要があります。

var ev = new CustomEvent("someString");
var el = document.getElementById("someElement");
el.addEventListener("someString", function (ev) {
    // should work
});
el.dispatchEvent(ev);
于 2011-10-28T10:18:59.270 に答える
4

new Functionandを使用するのは悪い習慣withですが、これはhttp://jsfiddle.net/pimvdb/72GwE/13/のように実行できます。

function trigger(elem, name, e) {
    var func = new Function('e',

      'with(document) {'
    + 'with(this) {'
    + elem.getAttribute('on' + name)
    + '}'
    + '}');

    func.call(elem, e);
}

次の HTML を使用します。

<input type="text" oncustombind="console.log(e, type, getElementById);" id="x">

次に、次のようなイベントをトリガーします。

trigger(document.getElementById('x'), 'custombind', {foo: 123});
于 2011-10-28T09:36:39.160 に答える