Làm cách nào để ngăn các trang tôi truy cập ghi đè các phím tắt Firefox đã chọn?


40

Trong Firefox, làm cách nào tôi có thể ngăn các trang ghi đè các phím tắt tích hợp trên Firefox thông qua Javascript trên cơ sở mỗi phím? Tốt hơn là trên cơ sở mỗi trang web, quá? Ghi đè khó chịu nhất là dấu gạch chéo ('/') được liên kết đến "Tìm trong trang". Các trang web như kết quả tìm kiếm của Google, dòng thời gian Twitter, một số wiki và các trang khác đánh cắp khóa gạch chéo cho hộp tìm kiếm của riêng họ, điều này hoàn toàn sai.

Vì đại diện của tôi cho phép tôi hỏi, chỉnh sửa và trả lời các câu hỏi, nhưng không thêm nhận xét, về cơ bản, đây là bản sao của hai câu hỏi khác không được trả lời đúng:

Làm thế nào để ngăn chặn một trang web để ghi đè các phím tắt bàn phím của tôi

Firefox: không cho phép các trang web ghi đè phím / (dấu gạch chéo)


1
Tôi cảm thấy thất vọng với PHPMyAdmin ghi đè ctrl- <mũi tên trái> ... đó là một câu hỏi hay
Rất bất thường

1
Tôi không thể đứng các trang web ghi đè hành vi mặc định. Rất nhiều làm điều đó với nhấp chuột giữa là tốt. Xem câu hỏi liên quan này cho một giải pháp cho vấn đề đó.
Cam Jackson

Câu trả lời:


12

Dựa trên câu trả lời của edymtt, tôi đã tạo một mô tả người dùng chỉ tắt các phím tắt cụ thể. Bạn có thể thêm nhiều phím tắt để vô hiệu hóa bằng cách thêm mã phím vào mảng mã phím hoặc hạn chế trang web nào sẽ áp dụng nó bằng cách thay thế @includethẻ bằng một hoặc nhiều mẫu.

Cài đặt bằng greasemonkey .

// ==UserScript==
// @name           Disable keyboard shortcuts
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

keycodes = [191] // Keycode for '/', add more keycodes to disable other key captures

document.addEventListener('keydown', function(e) {
//    alert(e.keyCode); //uncomment to find out the keycode for any given key
    if (keycodes.indexOf(e.keyCode) != -1)
    {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    }
    return false;
});

2
Tuyệt vời! Giải pháp gần như hoàn chỉnh cho các khóa meta cũng vậy --- Tôi đã cố gắng ngăn Google Docs chặn tab Trước đó (Cmd + Trái) và Tab tiếp theo (Cmd + Phải) và thấy rằng tôi cũng cần phải đặt useCapture thành true; tức là document.addEventListener ('keydown', yourHandlerFn, true)
chbrown

1
lưu ý rằng giá trị 191phụ thuộc vào bố cục bàn phím của bạn, liên quan đến cài đặt azerty của tôi (tôi có 16 + 58 cho khu vực alpha và 111 cho bàn phím số)
sylvainulg

2
và không may là không hoạt động nữa ngày nay (đã được thử nghiệm trên photypeator và twitter). trình nghe tùy chỉnh được kích hoạt nhưng dù sao sự kiện của trang cũng được kích hoạt và 'tìm kiếm trong trang' không hiển thị.
sylvainulg

1
@sylvainulg Tôi thấy rằng nó không hoạt động trên Twitter, nhưng ít nhất nó vẫn hoạt động trên GitHub. Tôi tự hỏi điều gì đã thay đổi.
binki

Điều này hoạt động ở mọi nơi tôi đã thử nó ngoại trừ php.net. Tôi tự hỏi họ đang sử dụng sự kiện nào.
qwazix

8

Liên quan đến Google và phím tắt Tìm kiếm nhanh, bạn có thể cài đặt tập lệnh Greasemonkey này:

http://userscripts-mirror.org/scripts/show/132237

Như mô tả nói, nó "ngăn google tập trung đầu vào tìm kiếm vào mỗi lần nhấn phím" - đặc biệt, nếu bạn nhấn /với tiêu điểm bàn phím bên ngoài hộp tìm kiếm, Tìm kiếm nhanh sẽ xuất hiện, như trên các trang web khác.

Tôi chỉ cài đặt nó mà không chạm vào mã, nhưng tôi nghĩ nó có thể dễ dàng điều chỉnh để hoạt động với các trang web khác và / hoặc các phím tắt khác.


Để làm rõ: bản mô tả này dừng TẤT CẢ các phím tắt trên các trang được bật, duy trì chức năng riêng của trình duyệt. Để áp dụng nó cho các trang web khác, chỉ cần thêm nhiều thẻ @incoide.
MikeFHay

không có bất kỳ thông tin nào về những gì ẩn đằng sau liên kết, thật không may câu trả lời là vô ích khi userscripts-mirror.org bị tắt, bị chặn bởi tường lửa hoặc bất cứ điều gì.
sylvainulg

8

Vì Firefox 58 có thể vô hiệu hóa ghi đè phím tắt trên mỗi trang web.

"Ghi đè Phím tắt" và nhiều quyền khác có sẵn trong "Thông tin trang -> Quyền" (dưới biểu tượng thông tin trong thanh URL).

Ví dụ về Quyền của Firefox cho superuser.com

Ghi đè bàn phím đã được giới thiệu trong Firefox # 380637


1
Vâng, sau 11 năm cuối cùng họ đã thực hiện một công việc nửa vời là sửa chiếc vé đó. Thật không may, việc triển khai hiện tại (vẫn trong FF 59) hoàn toàn vô hiệu hóa các phím BackspaceDelete, thực sự rất tệ.
Lambart

6
Ngoài ra, thật không may, nó không ngăn các trang web bắt đầu vào không được dịch chuyển (nghĩa là không Ctrl, Shifthoặc Altkhóa) - điều này có nghĩa là điều này không giúp ích gì cả với phím gạch chéo được đề cập trong câu hỏi ban đầu.
Lambart

@Lambart - rất tốt để biết, cuối cùng tôi cũng không sử dụng cái này, vì các phím tắt của firefox đã được sửa trong jira và confluence (đâu đó quanh firefox 59)
Alec Istomin

2
những gì đã được sửa chữa? Cả JIRA và Confluence vẫn lấy tất cả các loại chìa khóa liên tục phá vỡ quy trình làm việc của tôi. Tôi thấy đây là vấn đề của Atlassian: Họ cần cho phép mọi người vô hiệu hóa (và / hoặc thay đổi) "phím tắt" của họ.
Lambart

firefox bugzilla.mozilla.org/show_bug.cgi?id=1433592 cố định sản phẩm Atlassian đối với tôi (có thể đã Atlassian sửa trong cùng một khoảng thời gian)
Alec Istomin

0

Đây là một kịch bản tổng quát hơn - bạn có thể xác định bất kỳ số lượng sự kiện nhấn phím nào để tắt.

https://greasyfork.org/en/scripts/5819-disable-website-keyboard-hooks

// ==UserScript==
// @name           Disable website keyboard hooks
// @description    Stop websites from hijacking keyboard shortcuts.
// @author         Isaac Levy
// @run-at         document-start
// @include        *
// @grant          none
// @version        0.0.1
// @namespace      https://isaacrlevy.com
// ==/UserScript==

var keycodes = [ // Add keycodes as desired, keep sorted.
    37, 38, 39, 40 // Arrow keys.
]

var meta_keycodes = [ // Disable these when meta key is pressed.
    70
];

// Don't change below this line.

var isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;

// Create a fast lookup.
// This saves work during normal typing. Maybe unnecessary.
var keycode_offset = keycodes[0];
var keycode_arr = Array(keycodes[keycodes.length - 1] - keycode_offset)
for (var i = 0, len = keycodes.length; i < len; i++) {
    keycode_arr[keycodes[i] - keycode_offset] = true;
}

document.addEventListener('keydown', function(e) {
    //console.log(e);
    if ((isMac && e.metaKey) || (!isMac && e.ctrlKey)) {
        if (meta_keycodes.indexOf(e.keyCode) >= 0) {
            e.stopImmediatePropagation();
        }
    } else if (keycode_arr[e.keyCode - keycode_offset]) {
        e.stopImmediatePropagation();
    }
    return false;
});

Tôi xin lỗi - nhưng tôi không thể làm việc này. Đặc biệt tôi muốn vô hiệu hóa các phím mũi tên trái và phải trên một trang web - nhưng với tập lệnh này, các phím mũi tên vẫn kiểm soát trang web ???
Christian Herenz 04/12/2015

-3

Bổ trợ YesScript là giải pháp miễn phí rắc rối cho tôi. Nó ngăn các trang web chạy JavaScript nhưng chỉ các trang web bạn chọn. Hầu hết các trang web này chiếm quyền điều khiển phím tắt bằng JavaScript. Tôi tìm thấy về nó trên bài viết này Ghacks.net.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.