4

私は、SOの近い質問のポップアップに重複へのリンクを挿入するためのコードに取り組んでいます:

デュープとして閉じる

テキストボックスに質問へのリンクを手動で挿入すると、一部のJSが起動し、URLに属する質問をフェッチします。ただし、javascript(Chrome拡張機能)を使用してURLをテキストボックスに挿入すると、SOjavascriptが質問を取得するために起動することはありません。複製のURLを挿入するために使用しているコードは次のとおりです。

$(document).on('click', '.cvhelper-dupelist li', function() {
  var url = $('a', this).attr('href');
  var $dupeBox = $('#duplicate-question');

  $dupeBox.val(url);
});

上記のコードはテキストボックスにリンクを正常に挿入しますが、何らかの理由でSOjavascriptが質問を取得するために起動することはありません。

私はまた、おそらくそれを無駄にするために次のことを試みました:

$dupeBox.change();

$dupeBox.keyup();

何が起こっているかをテストするには、ランダムな質問の重複ポップアップ(上記のように)を開いて実行します。

$('#duplicate-question').val('http://stackoverflow.com/questions/8028957/headers-already-sent-by-php');

ブラウザコンソールで。

4

1 に答える 1

2

私は1つの方法を考え出したと思いますが、それはかなり壊れやすいです:

$dupeBox.data('events').keydown[1].handler({keyCode: 13})

これにより、この要素の 2 番目の keydown イベント ハンドラーがトリガーされます。また、スタブ化されたイベント オブジェクトの keyCode を提供します。

アップデート

より良い方法を見つけました:

以下を使用してjQuery.Eventオブジェクトを作成できます。

var e = jQuery.Event("keydown", { keyCode: 64 });

そして、このオブジェクトでイベントをトリガーします:

$dupeBox.trigger(e)

問題は、イベント オブジェクトに何かがあるかどうかを SO コードがチェックしていたことです。

e(d).keydown(c).bind("paste", null, function(a) {
  a.which || c(this)
})
于 2012-06-09T20:57:22.987 に答える