1

これは、この質問に対するフォローアップの質問です。短いバージョンは次のとおりです。javascript(Chrome拡張機能)を使用して、クローズ投票ポップアップのテキストフィールドに、重複リンク(ここではスタックオーバーフローの重複としてクローズ投票)を挿入しようとしています。前の答えは私をもう少し先に進め、解決策のようです。ただし、その質問に対する回答はコンソールでは機能しますが、何らかの理由で私のクロム拡張機能では機能しません。

問題は、投票を開いて質問のスタック オーバーフローのポップアップを閉じ、だまされた理由をクリックするときです。コンソールで次のコードを実行できます。

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

var e = $.Event('keydown', { keyCode: 64 });
$dupeQuestion.trigger(e);

そして、すでに述べたように、これは機能します。リンクがテキストボックスに挿入され、Stack Overflow JS が起動して質問を取得します。ただし、拡張機能でまったく同じコードを実行しようとすると、ちょっとしか機能しません。

$(document).on('click', '.cvhelper-dupelist li', function() {
  var $dupeQuestion = $('#duplicate-question');
  $dupeQuestion.val('https://stackoverflow.com/questions/8028957/headers-already-sent-by-php');

  var e = $.Event('keydown', { keyCode: 64 });
  $dupeQuestion.trigger(e);
});

リンクがテキストボックスに挿入されますが、質問を取得するためのスタックオーバーフロースクリプトが機能しません。そのため、何が問題なのかまったくわかりません。コンソールとコンテンツスクリプトを使用する場合、おそらくどこかに違いがありますか? 他に何か?

拡張機能の非常に単純化されたバージョンを含むダウンロードを github で作成しました。

4

2 に答える 2

0

考えられる理由の 1 つは、他のスクリプトが読み込まれる前にコンテンツ スクリプトが実行され、他の処理が台無しになることです。それが理由である場合は、次を試してください。

"content_scripts": [
    {
        "run_at": "document_end",
        "js": ["jquery.js", "myscript.js"]
    }
]

それはうまくいくかもしれませんが、私は本当に知りません。:/試してみて、修正されるかどうかを確認してください。

于 2012-06-09T23:32:23.167 に答える
0

さて、これが頭に浮かぶ唯一のことです:

$(document).on('click', '.cvhelper-dupelist li', function() {
  var $dupeQuestion = $('#duplicate-question');
  $dupeQuestion.val('http://stackoverflow.com/questions/8028957/headers-already-sent-by-php');

  setTimeout(function() {
      var e = $.Event('keydown', { keyCode: 64 });
      $dupeQuestion.trigger(e);
  }, 1);
});

基本的に、keyDown のトリガーを試行する前に、クリック ハンドラーを終了させます。

于 2012-06-11T16:39:00.777 に答える