加州 DMV 网站上的不可禁用粘贴

cer*_*wen 3 javascript

CA DMV 有一个网站,它禁止以某种非标准方式粘贴,因为用于纠正此行为的标准技术(在 about:config 中为 Firefox、在 Firefox 或 Chrome 的扩展中设置正确的选项)均无效。当您尝试粘贴到一个不允许的字段中时,它会弹出一个对话框,显示“抱歉,此功能已禁用。”

  1. 这是怎么做的?

  2. 我该如何纠正?

aap*_*ath 5

已经提到了为什么会发生这种情况:本质上,input元素上有事件侦听器,用于检测和阻止右键单击和control按键事件。(展开下面的代码片段以查看执行此操作的函数。)

function whichButton(event, msg) {
  if (event.button == 2)//RIGHT CLICK
  {
    alert(msg);
  }
}

function noCTRL(e, msg) {
  var code = (document.all) ? event.keyCode : e.which;
  if (parseInt(code) == 17) //CTRL
  {
    alert(msg);
    window.event.returnValue = false;
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然已经提到的答案(防止keydown传播)解决了control关键问题,但它并没有重新启用右键单击。我会断言,解决这个问题的最简单的方法就是将事件侦听器调用的whichButtonnoCTRL函数重新定义为空白。要做到这一点很简单:

whichButton = noCTRL = () => {}
Run Code Online (Sandbox Code Playgroud)

您可以将其包装在用户脚本中,如下所示:

// ==UserScript==
// @name         Reenable Paste on CA DMV
// @match        https://www.dmv.ca.gov/FIM/sps/uscfed/usc/self/account/create
// @grant        none
// ==/UserScript==

whichButton = noCTRL = () => {}
Run Code Online (Sandbox Code Playgroud)

要使用用户脚本,您需要安装TampermonkeyGreasemonkey