如何重新启用右键单击以便我可以检查Chrome中的HTML元素?

Zo7*_*o72 57 javascript google-chrome

我正在查看一个覆盖右键单击按钮的网页,以显示自己的弹出HTML元素.

这使我无法使用Chrome开发者工具检查元素.

有人知道我可以从Chrome控制台注入的JavaScript代码段重新启用右键单击吗?

我可以打破现有的"右键单击"功能,以便能够轻松检查HTML元素.

谢谢.

Phi*_*l H 53

如果他们刚刚更改了oncontextmenu处理程序(这是最简单的方法),那么你可以删除它们的覆盖:

window.oncontextmenu = null;
Run Code Online (Sandbox Code Playgroud)

否则,如果它附加到单个元素,您可以获取所有页面的元素,然后删除每个元素上的处理程序:

var elements = document.getElementsByTagName("*");
for(var id = 0; id < elements.length; ++id) { elements[id].oncontextmenu = null; }
Run Code Online (Sandbox Code Playgroud)

或者,似乎你可以关闭这样的脚本; 通过Chrome中的扩展程序Firefox中的选项 - 在javascript选项的高级框中,关闭"禁用或替换上下文菜单".

  • 我认为你走在正确的道路上...但是我只是测试了它并且它不起作用...... (3认同)

Che*_*ema 27

截至 2019 年 8 月,此 bookmarlet 可在 Google 网站/Youtube 中使用(在 Chrome 和 Firefox 中测试):

function enableContextMenu(aggressive = false) { 
void(document.ondragstart=null); 
void(document.onselectstart=null); 
void(document.onclick=null); 
void(document.onmousedown=null); 
void(document.onmouseup=null); 
void(document.body.oncontextmenu=null); 
enableRightClickLight(document); 
if (aggressive) { 
  enableRightClick(document); 
  removeContextMenuOnAll("body"); 
  removeContextMenuOnAll("img"); 
  removeContextMenuOnAll("td"); 
  } } 

function removeContextMenuOnAll(tagName) { 
var elements = document.getElementsByTagName(tagName); 
  for (var i = 0; i < elements.length; i++) { 
    enableRightClick(elements[i]); 
  } 
} 

function enableRightClickLight(el) { 
  el || (el = document); 
  el.addEventListener("contextmenu", bringBackDefault, true); 
} 

function enableRightClick(el) { 
  el || (el = document); 
  el.addEventListener("contextmenu", bringBackDefault, true); 
  el.addEventListener("dragstart", bringBackDefault, true); 
  el.addEventListener("selectstart", bringBackDefault, true); 
  el.addEventListener("click", bringBackDefault, true); 
  el.addEventListener("mousedown", bringBackDefault, true); 
  el.addEventListener("mouseup", bringBackDefault, true); 
} 

function restoreRightClick(el) { 
  el || (el = document); 
  el.removeEventListener("contextmenu", bringBackDefault, true); 
  el.removeEventListener("dragstart", bringBackDefault, true); 
  el.removeEventListener("selectstart", bringBackDefault, true); 
  el.removeEventListener("click", bringBackDefault, true); 
  el.removeEventListener("mousedown", bringBackDefault, true); 
  el.removeEventListener("mouseup", bringBackDefault, true); 
} 
function bringBackDefault(event) {
  event.returnValue = true; 
  (typeof event.stopPropagation === 'function') && 
  event.stopPropagation(); 
  (typeof event.cancelBubble === 'function') && 
  event.cancelBubble(); 
} 

enableContextMenu();
Run Code Online (Sandbox Code Playgroud)

对于烦人的站点,设置/传递aggressive为true(这将禁用大多数事件处理程序,从而禁用与页面的交互):

function enableContextMenu(aggressive = true) { 
  void(document.ondragstart=null);
  void(document.onselectstart=null);
  void(document.onclick=null);
  void(document.onmousedown=null);
  void(document.onmouseup=null); 
  void(document.body.oncontextmenu=null); 
  enableRightClickLight(document); 
  if (aggressive) {
    enableRightClick(document);
    removeContextMenuOnAll("body");
    removeContextMenuOnAll("img");
    removeContextMenuOnAll("td");
  }
} 

function removeContextMenuOnAll(tagName) {
 var elements = document.getElementsByTagName(tagName);
 for (var i = 0; i < elements.length; i++) { enableRightClick(elements[i]);
  }
} 

function enableRightClickLight(el) { 
  el || (el = document); 
  el.addEventListener("contextmenu", bringBackDefault, true); 
}

function enableRightClick(el) {
  el || (el = document);
  el.addEventListener("contextmenu", bringBackDefault, true); 
  el.addEventListener("dragstart", bringBackDefault, true); 
  el.addEventListener("selectstart", bringBackDefault, true); 
  el.addEventListener("click", bringBackDefault, true); 
  el.addEventListener("mousedown", bringBackDefault, true); 
  el.addEventListener("mouseup", bringBackDefault, true); 
} 

function restoreRightClick(el) {
  el || (el = document);
  el.removeEventListener("contextmenu", bringBackDefault, true); 
  el.removeEventListener("dragstart", bringBackDefault, true); 
  el.removeEventListener("selectstart", bringBackDefault, true); 
  el.removeEventListener("click", bringBackDefault, true); 
  el.removeEventListener("mousedown", bringBackDefault, true); 
  el.removeEventListener("mouseup", bringBackDefault, true);
} 

function bringBackDefault(event) {
  event.returnValue = true;
  (typeof event.stopPropagation === 'function') && 
  event.stopPropagation();
  (typeof event.cancelBubble === 'function') &&
  event.cancelBubble(); 
} 

enableContextMenu();
Run Code Online (Sandbox Code Playgroud)


Vag*_*iou 23

在Chrome 60.0.3112.78中测试过.

上述一些方法有效,但我认为最简单的方法是:

  1. 打开开发工具(Shift + Control + i).

  2. 选择"元素"选项卡,然后选择"事件监听器"选项卡.

  3. 将鼠标悬停在元素/侦听器上.将出现"删除"按钮.

  4. 单击"删除".

例如看照片.

删除事件侦听器


nic*_*ick 21

最简单的方法是按Cmd + Opt + I(Mac)或F12(PC)打开开发工具.然后,您可以使用搜索(放大镜,开发工具工具栏左上角)来选择元素.

  • 或者可以执行Ctrl(Cmd)+ Shift + C直接打开“元素选择”功能 (2认同)

Łuk*_*jek 21

我建立在@Chema 解决方案的基础上,并添加了重置pointer-eventsuser-select. 如果将它们设置为none用于图像,则右键单击它不会调用带有查看或保存选项的图像的上下文菜单。

javascript:function enableContextMenu(aggressive = true) { void(document.ondragstart=null); void(document.onselectstart=null); void(document.onclick=null); void(document.onmousedown=null); void(document.onmouseup=null); void(document.body.oncontextmenu=null); enableRightClickLight(document); if (aggressive) { enableRightClick(document); removeContextMenuOnAll('body'); removeContextMenuOnAll('img'); removeContextMenuOnAll('td'); } } function removeContextMenuOnAll(tagName) { var elements = document.getElementsByTagName(tagName); for (var i = 0; i < elements.length; i++) { enableRightClick(elements[i]); enablePointerEvents(elements[i]); } } function enableRightClickLight(el) { el || (el = document); el.addEventListener('contextmenu', bringBackDefault, true); } function enableRightClick(el) { el || (el = document); el.addEventListener('contextmenu', bringBackDefault, true); el.addEventListener('dragstart', bringBackDefault, true); el.addEventListener('selectstart', bringBackDefault, true); el.addEventListener('click', bringBackDefault, true); el.addEventListener('mousedown', bringBackDefault, true); el.addEventListener('mouseup', bringBackDefault, true); } function restoreRightClick(el) { el || (el = document); el.removeEventListener('contextmenu', bringBackDefault, true); el.removeEventListener('dragstart', bringBackDefault, true); el.removeEventListener('selectstart', bringBackDefault, true); el.removeEventListener('click', bringBackDefault, true); el.removeEventListener('mousedown', bringBackDefault, true); el.removeEventListener('mouseup', bringBackDefault, true); } function bringBackDefault(event) { event.returnValue = true; (typeof event.stopPropagation === 'function') && event.stopPropagation(); (typeof event.cancelBubble === 'function') && event.cancelBubble(); } function enablePointerEvents(el) {  if (!el) return; el.style.pointerEvents='auto'; el.style.webkitTouchCallout='default'; el.style.webkitUserSelect='auto'; el.style.MozUserSelect='auto'; el.style.msUserSelect='auto'; el.style.userSelect='auto'; enablePointerEvents(el.parentElement); } enableContextMenu();
Run Code Online (Sandbox Code Playgroud)


小智 14

您可以使用以下代码重新启用鼠标右键单击.

document.oncontextmenu = function(){}
Run Code Online (Sandbox Code Playgroud)

并且您可以使用快捷键(Ctrl + Shift + i)在Windows操作系统中打开Chrome中的检查元素.


Ser*_*erg 7

您可以使用javascript:void(document.oncontextmenu=null); 打开的浏览器控制台并运行上面的代码.它将关闭鼠标右键的阻止


jea*_*dam 5

另一种可能的方法,当使用jquery创建阻塞函数时,使用:

$(document).unbind();
Run Code Online (Sandbox Code Playgroud)

它将清除所有动态归因的onmousedown和contextmenu事件,这些事件不能用document.contextmenu = null擦除; 等等