Як повторно ввімкнути клацання правою кнопкою миші, щоб я міг перевіряти елементи HTML у Chrome?


84

Я переглядаю веб-сторінку, яка замінила кнопку правої кнопки миші, щоб відобразити власний спливаючий HTML-елемент.

Це заважає мені використовувати Chrome Developer Tools для перевірки елементів.

Хтось знає фрагмент JavaScript, який я міг би ввести з консолі Chrome, щоб знову ввімкнути клацання правою кнопкою миші?

Я добре порушую існуючу функціональність клацання правою кнопкою миші, щоб мати змогу легко перевіряти елементи HTML.

Дякую.


якщо ви використовуєте firebug для firefox, ви все одно можете виділяти елементи за допомогою миші ... Я знаю, це означає використання Firefox, але це може бути корисно.
Джошуа Смікус

@Teemu Firebug Lite доступний у Chrome. Не впевнений, навіщо вам потрібно використовувати його за допомогою інструментів за замовчуванням.
James Donnelly

1
@JoshSmickus Питання позначено тегом [google-chrome], також OP запитує, як використовувати інструменти розробника Chrome для перевірки елементів.
Teemu

Відповіді:


73

Якщо вони щойно змінили oncontextmenuобробник (що є найпростішим способом зробити це), ви можете видалити їх заміну таким чином:

window.oncontextmenu = null;

В іншому випадку, якщо він приєднаний до окремих елементів, ви можете отримати всі елементи сторінки, а потім видалити обробник для кожного з них:

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

Або, схоже, ви можете вимкнути такі сценарії; через розширення в Chrome або опцію у Firefox - у розширеному полі для параметрів javascript вимкніть «Вимкнути або замінити контекстне меню».


3
Я думаю, ви на правильному шляху ... однак я щойно перевірив це, і це не працює ...
Zo72

1
Тоді я пропоную вам знайти механізм, який вони використовують, і розмістити його тут, щоб ми могли побачити, як його усунути. Розширення, швидше за все, запрацює.
Phil H

Це працює, а також зауважте, що onselectstart може знову активувати підсвічування
Келвін Нг

1
як я можу ввімкнути "лівий клік"?
GorvGoyl

1
Я натиснув клавішу F12, потім використав консоль, і ваш другий сценарій спрацював чудово, дякую
jmdon

34

Перевірено в Chrome 60.0.3112.78.

Деякі з вищезазначених методів працюють, але найпростіший на мій погляд:

  1. Відкрийте інструменти розробника (Shift + Control + i).

  2. Виберіть вкладку "Елементи", а потім вкладку "Слухачі подій".

  3. Наведіть курсор на елементи / слухач. З'явиться кнопка "Видалити".

  4. Клацніть «Видалити».

Наприклад, див. Фото.

Видалити прослуховувач подій


на жаль, не спрацював, моїм цільовим веб-сайтом був ieltsliz.com/ielts-writing-task-1-lessons-and-tips
Омар

@Omar Для цього конкретного сайту вони зробили певну роботу, щоб спробувати зупинити копіювання. У Chrome, Ctrl + Shift + I, перебуваючи в рядку URL-адреси, може отримати консоль. Я зміг отримати виділення та скопіювати нормально працюючу програму, видаливши всі прослуховувачі подій (виберіть "Предки" та видаліть все, на тезі body є деякі зайві), видаливши з тіла "невибірковий" клас та змінивши "user-select" до автоматичного в стилях html.
Lugia101101

22

Найпростіше це відкрити інструменти розробника, натиснувши Cmd + Opt + I (Mac) або F12 (ПК). Потім ви можете скористатися пошуком (лупою, вгорі ліворуч на панелі інструментів розробника), щоб вибрати елемент.


спасибі, але на цьому етапі я хотів би занадто повторно активувати реквізит ... не обхідний шлях
Zo72

4
або можна зробити Ctrl (Cmd) + Shift + C, щоб відкрити безпосередньо функціональність "вибору елемента"
Тіті

20

Цей букмарк працює на сайтах Google / Youtube станом на серпень 2019 року (протестовано в 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();

Для більш набридливих сайтів встановіть / передайте агресивне значення 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();

15

Ви можете використовувати наступний код для повторного ввімкнення правої клавіші миші.

document.oncontextmenu = function(){}

і ви можете скористатися комбінацією клавіш (Ctrl + Shift + i), щоб відкрити елементи перевірки в chrome в ОС Windows.


1
Це працює як шарм! Якщо вам доводиться робити це часто, як мені, ви можете додати його як закладку: Створіть нову закладку та помістіть як URL: javascript: (document.oncontextmenu = function () {}) () Тепер кожного разу, коли сторінки, яка вас виправляє, просто клацніть закладку і готово.
Ніко Гавенда

Це найкраща відповідь. Дуже дякую.
Алі Хашемі

14

Я спирався на рішення @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();

Це спрацювало, поки перше рішення не допомогло (спробували на сторінці запису екрана масштабування)
elad silver

7

Ви можете використовувати javascript:void(document.oncontextmenu=null); відкриту консоль браузера і запустити код вище. Це вимкне блокування правої кнопки миші


6

Інший можливий спосіб, коли функція блокування виконується за допомогою jquery, використовуйте:

$(document).unbind();

Буде очищено всі події onmousedown і contextmenu, які динамічно атрибутуються, які неможливо стерти за допомогою document.contextmenu = null; тощо


те саме для мене, деякий код повторно прив’язав:$(document).bind("contextmenu",function(e){if(!$('#easyy').length)e.preventDefault();});
Master of Celebration

1

Привіт, у мене коротша версія. це те саме, що найкраща відповідь. (працює на chrome 74.03)

document.querySelectorAll('*').forEach(e => e.oncontextmenu = null)

0

Вимкнення "НАЛАШТУВАННЯ> КОНФІДЕНЦІЙНІСТЬ> не дозволяти JavaScript" у Chrome увімкне функцію клацання правою кнопкою миші та дозволить консолі Firebug працювати; але також вимкне всі інші коди JavaScript.

Правильний спосіб зробити це - вимкнути лише певний JavaScript; шукаємо будь-який з наступних рядків коду:

  • Функція disableclick
  • Клацніть на функцію… поверніть false;
  • body oncontextmenu = "повернути false;"

0

Я щойно відвідав цей сайт, і він насправді змусив мене,

мабуть, є кілька способів відключити клацання мишею:

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 та видалити його.

У моєму випадку №1 зробив свою справу


0

Я вирішив це шляхом видалення прослуховувачів подій на сторінці. Після цього я зміг скопіювати текст і вставити його на обраний процесор.


0

Якщо сторінка, на якій ви перебуваєте, має введений текст або текстове поле , клацніть на цьому введенні (як ніби ви хочете ввести текст), потім клацніть правою кнопкою миші та виберіть « Перевірити елемент ».



0

Відкрийте режим перевірки перед переходом на сторінку. Це спрацювало. Хе-хе


-1

Найпростіший спосіб, який я знайшов, - це відкрити веб-сторінку в режимі читання (браузер, що підтримує режим читання, наприклад Safari, Firefox тощо), а потім скопіювати, як зазвичай


-3

Просто натисніть F12

Перейдіть до джерел

Там ви знайдете Увімкнути правою кнопкою миші . Клацніть на нього.

Під цим ви знайдете web_accessible_resource .

Відкривши його, ви знайдете index.js .

Натисніть Ctrl + F і знайдіть DisabelRightClick . Там ти знайдеш

        var disableRightClick = false;  

цей рядок. Замініть цей рядок на

        var disableRightClick = true;

Просто натисніть Ctrl + s

!! Готово. Тепер ваш правий клік включений !!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.