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选项的高级框中,关闭"禁用或替换上下文菜单".
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中测试过.
上述一些方法有效,但我认为最简单的方法是:
打开开发工具(Shift + Control + i).
选择"元素"选项卡,然后选择"事件监听器"选项卡.
将鼠标悬停在元素/侦听器上.将出现"删除"按钮.
单击"删除".
例如看照片.
nic*_*ick 21
最简单的方法是按Cmd + Opt + I(Mac)或F12(PC)打开开发工具.然后,您可以使用搜索(放大镜,开发工具工具栏左上角)来选择元素.
Łuk*_*jek 21
我建立在@Chema 解决方案的基础上,并添加了重置pointer-events和user-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中的检查元素.
另一种可能的方法,当使用jquery创建阻塞函数时,使用:
$(document).unbind();
Run Code Online (Sandbox Code Playgroud)
它将清除所有动态归因的onmousedown和contextmenu事件,这些事件不能用document.contextmenu = null擦除; 等等
| 归档时间: |
|
| 查看次数: |
64090 次 |
| 最近记录: |