1

这是对此问题的后续问题。简短版本是:我正在尝试使用 javascript(Chrome 扩展程序)在关闭投票弹出窗口中的文本字段中插入一个欺骗链接(在 Stack Overflow 上关闭投票作为欺骗)。先前的答案让我更进一步,似乎是解决方案。但是,该问题的答案在控制台中有效,但由于某种原因在我的 chrome 扩展中不起作用。

问题是:当在 Stack Overflow 上打开投票关闭弹出窗口时,点击问题并单击欺骗原因。我可以在控制台中运行以下代码:

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);
});

Kinda 的意思是:链接被插入到文本框中,但是用于检索问题的 Stack Overflow 脚本没有启动。所以我完全不知道可能出了什么问题。使用控制台与内容脚本时,某处可能有所不同?还要别的吗?

我在 github 上创建了一个非常简化的扩展版本下载。

4

2 回答 2

0

可能的原因之一是您的内容脚本在其他脚本加载之前执行并且它搞砸了其他事情。如果是这个原因,请尝试:

"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 回答