javascript – 在Stackoverflow上的关闭弹出窗口中插入链接到欺骗

我正在研究一些代码,在SO关闭问题弹出窗口中插入一个欺骗的链接:

当您在文本框中手动插入问题链接时会发生什么情况是某些JS启动并获取属于URL的问题.但是,当我使用javascript(Chrome扩展程序)将URL插入文本框时,SO javascript从未启动以检索问题.我用来插入欺骗网址的代码是:

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

  $dupeBox.val(url);
});

上面的代码成功地在文本框中插入了链接,但是出于某种原因,SO javascript从未启动以检索问题.

我也试过以下可能会迫使它无济于事:

$dupeBox.change();

$dupeBox.keyup();

为了测试发生了什么,您可以打开关闭随机问题的dupe弹出窗口(如上所示)并运行:

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

在浏览器控制台中.

最佳答案 我想我找到了一种方法,但它相当脆弱:

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

这会触发此元素的第二个keydown事件处理程序.并为存根事件对象提供了一个keyCode.

UPDATE

找到了更好的方法:

您可以使用以下内容构造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)
})
点赞