我正在查看一个覆盖了右键单击按钮的网页,以便显示其自己的弹出HTML元素。
这使我无法使用Chrome开发者工具检查元素。
有人知道我可以从Chrome控制台注入以重新启用右键单击的JavaScript代码段吗?
我可以打破现有的“右键单击”功能,以便能够轻松检查HTML元素。
谢谢。
我正在查看一个覆盖了右键单击按钮的网页,以便显示其自己的弹出HTML元素。
这使我无法使用Chrome开发者工具检查元素。
有人知道我可以从Chrome控制台注入以重新启用右键单击的JavaScript代码段吗?
我可以打破现有的“右键单击”功能,以便能够轻松检查HTML元素。
谢谢。
Answers:
如果他们刚刚更改了oncontextmenu
处理程序(这是最简单的方法),则可以这样删除它们的覆盖:
window.oncontextmenu = null;
否则,如果将它附加到各个元素,则可以获取页面的所有元素,然后删除每个元素上的处理程序:
var elements = document.getElementsByTagName("*");
for(var id = 0; id < elements.length; ++id) { elements[id].oncontextmenu = null; }
或者,您似乎可以关闭此类脚本;通过Chrome中的扩展程序或Firefox中的选项-在javascript选项的高级框中,关闭“禁用或替换上下文菜单”。
最简单的方法是按Cmd + Opt + I(Mac)或F12(PC),打开开发工具。然后,您可以使用搜索(放大镜,位于开发工具工具栏的左上方)来选择元素。
该手册自2019年8月起在Google网站/ Youtube中有效(已在Chrome和Firefox中测试):
javascript: 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();
对于peskier网站,请将“积极”设置/传递为true(这将禁用大多数事件处理程序,从而禁用与页面的交互):
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]); } } 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();
您可以使用以下代码重新启用鼠标右键。
document.oncontextmenu = function(){}
并且您可以使用快捷键(Ctrl + Shift + i)在Windows操作系统中以chrome打开检查元素。
我以@Chema解决方案为基础,并添加了resetpointer-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();
我刚刚访问了这个网站,它确实困扰了我,
显然,有几种方法可以禁用鼠标单击:
1)
<script language="javascript">
document.onmousedown=disableclick;
status="Right Click Disabled";
function disableclick(event)
{
if(event.button==2)
{
alert(status);
return false;
}
}
</script>
和
<body oncontextmenu="return false">
...
在这种情况下,您在开发工具中必须要做的是:
document.removeEventListener("onmousedown",disableclick);
document.oncontextmenu = function(){}
2)
使用Flash作为内容包装器-除了拍摄屏幕截图以外,这里没有其他解决方案
3)
一些网站希望阻止通过右键单击下载图像->将图像另存为
所以他们的工作是这样的:
<div style="background-image: url(YourImage.jpg);">
<img src="transparent.gif"/>
</div>
这是一张透明的图像,显示在屏幕的整个宽度和高度上,您需要做的就是转到元素检查器并找到div并将其删除。
在我的情况下,第一个成功了
Chrome开发者工具工具栏的最左侧有一个按钮,可让您选择要检查的项目,而与上下文菜单处理程序无关。它看起来像一个正方形,箭头指向中心。