问题涉及特定网站:NS.nl上的票务订单。在该页面中,有一个文本输入框用于输入电子邮件,但是该字段已禁用Ctrl-V(粘贴)。
问题:什么Greasemonkey脚本将启用该字段的粘贴功能?
我已经研究了各种解决方案,包括:
并得出以下脚本,但(不幸的是)它不能在给定的网站上工作(使用FF v40,Greasemonkey v3.4进行测试):
// Taken from http://userscripts-mirror.org/scripts/review/40760
unsafeWindow.disable_paste = function() { return true; };
// jQuery is already available on the page:
var $j = jQuery.noConflict();
// Site generates the form on-the-fly, so we schedule the necessary modifications for later:
setTimeout(function() {
$j(document).off('copy paste', '[data-regex=email], [data-regex=emailRepeat]');
$j(document).off('keyup keydown keypress cut copy paste');
// Taken from https://stackoverflow.com/questions/28266689/how-to-enable-paste-on-html-page-with-locked-cmdv
$j('*').each(function(){
$j(this).unbind('paste');
});
}, 2000);
由于该网站动态构建表单,因此使用延迟执行(通过setTimeout()
)。下图显示了“有问题”的元素:
setTimeout()
调用脚本时才能正常工作(也就是说,如果按照您提供的文字逐字理解,它不起作用,至少在FF中是这样)。我尝试使用$(document).on('copy paste', '[data-regex=email], [data-regex=emailRepeat]', function(event) { event.stopImmediatePropagation(); });
但那并不起作用。有什么想法吗? - dma_k$(function() { ....... });
中即可,这样它将在文档和jQuery都加载完成后执行。 - wOxxOm$(function() { })
不起作用。它对你有用吗?实际上,我不明白为什么它应该起作用,因为$(document).on('events', 'selector', function)
也会在给定节点附加到 DOM 后触发(所以我认为它是更好的候选者,可以正常工作)。 - dma_k