如何防止右键单击Puppeteer?

时间:2019-10-12 15:37:08

标签: puppeteer

我想防止用户右键单击在Puppeteer中生成的Chromium实例。我该怎么办?

1 个答案:

答案 0 :(得分:0)

最有效的方法是注册a function that will run before opening any new page

await page.evaluateOnNewDocument(() => 
    document.addEventListener('contextmenu', event => event.preventDefault()) 
);

当然,目标页面可以删除和/或重新分配该事件侦听器。因此,另一种方法是等待页面加载(或等待某些选择器)并再次创建事件侦听器:

await page.evaluate(() =>
    document.addEventListener('contextmenu', event => event.preventDefault())
);

或者您可以做一个更狡猾的事情,并劫持document.addEventListener以完全禁止添加contextmenu事件监听器:

await page.evaluateOnNewDocument(() => { 

      document.addEventListener('contextmenu', event => event.preventDefault())

      const realAddEventListener = document.addEventListener;

      document.addEventListener = function(type, listener){
          type === 'contextmenu' || realAddEventListener.apply(this, arguments);
      };
  }
);

(基于this answer及其评论)