| Index: go-back-with-backspace/content_script.js
|
| diff --git a/go-back-with-backspace/content_script.js b/go-back-with-backspace/content_script.js
|
| index ea6cecb9faed2c4f69ea92af858ad7961f53eac5..1e41c87bd97bca582a3f344b68ee7f440877f841 100644
|
| --- a/go-back-with-backspace/content_script.js
|
| +++ b/go-back-with-backspace/content_script.js
|
| @@ -2,17 +2,21 @@
|
| // an editable field. We capture the event at the Window to let any handlers
|
| // or listeners registered on the Document have a chance to handle it first.
|
| window.addEventListener('keydown', function(e) {
|
| - // Listening on the Window means the event has no path (see
|
| - // http://crbug.com/645527), so we'll have to look at the focused (active)
|
| - // element. This means it will not work properly with shadow DOM.
|
| - // TODO: Fix behavior with shadow DOM when the above bug is resolved.
|
| + // Before Chrome 55, listening on the Window means the event has no path,
|
| + // instead pointing to the Window (see http://crbug.com/645527). In that
|
| + // case, we have to look at the focused (active) element.
|
| + // TODO: Switch entirely to e.path once Chrome 55 is launched.
|
| if (e.key === 'Backspace' &&
|
| !e.defaultPrevented &&
|
| !e.altKey &&
|
| !e.ctrlKey &&
|
| - !e.metaKey &&
|
| - !isEditable(document.activeElement)) {
|
| - e.shiftKey ? window.history.forward(): window.history.back();
|
| - e.preventDefault();
|
| + !e.metaKey) {
|
| + var target = e.path[0];
|
| + if (target === window)
|
| + target = document.activeElement;
|
| + if (!isEditable(target)) {
|
| + e.shiftKey ? window.history.forward(): window.history.back();
|
| + e.preventDefault();
|
| + }
|
| }
|
| });
|
|
|