用于启用"粘贴"的脚本在网站上

时间:2015-09-25 14:29:30

标签: javascript browser greasemonkey clipboard copy-paste

问题涉及特定网站:tickets order on 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()),因为站点动态构建表单。 "有问题"元素显示在以下屏幕截图中:

Form field element that has disabled paste

2 个答案:

答案 0 :(得分:3)

  • 要取消绑定事件,您应该提供页面设置的原始处理程序:

    function change_links_target()
    {   
        var all_document_links = mFrameDocument.getElementsByTagName("a");
        for (i = 0; i < all_document_links.length; i++){
            all_document_links[i].setAttribute("target", "_top");
        }
    }   
    
  • 另一种仅适用于Chrome的方法是为// ==UserScript== // @name Re-enable copy/paste of emails // @include https://www.ns.nl/producten/s/railrunner* // @grant none // ==/UserScript== $(function() { $(document).off("copy paste", "[data-regex=email], [data-regex=emailRepeat]", $._data(document, "events").paste[0].handler); }); / oncopy元素属性分配直接事件侦听器,因此它的优先级高于网站的侦听器附于onpaste。在您的监听器中,阻止其他侦听器通过stopImmediatePropagation

    查看事件
    document

答案 1 :(得分:0)

所选答案对我不起作用。我发现这个简单的脚本确实有效:

var allowPaste = function(e){
  e.stopImmediatePropagation();
  return true;
};
document.addEventListener('paste', allowPaste, true);

在这里找到的:https://www.howtogeek.com/251807/how-to-enable-pasting-text-on-sites-that-block-it/