我想防止用户右键单击在Puppeteer中生成的Chromium实例。我该怎么办?
答案 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及其评论)