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 cc7fca6218a17ebc7f28b84725daee28d3925a22..c462d5b72188c17320e904d9b4afb98dad8f4bfb 100644 |
--- a/go-back-with-backspace/content_script.js |
+++ b/go-back-with-backspace/content_script.js |
@@ -44,14 +44,16 @@ function handleBackspace(e) { |
return; |
// The whitelist overrides applet focus. |
- // 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. |
- if (!options.whitelist.includes(url) && |
- disabledInApplet(document.activeElement)) |
+ // 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. |
+ var target = e.path[0]; |
+ if (target === window) |
+ target = document.activeElement; |
+ if (disabledInApplet(url, target)) |
return; |
- if (isEditable(document.activeElement)) |
+ if (isEditable(target)) |
return; |
// Make sure this extension is still active. |
@@ -78,9 +80,10 @@ function handleBackspace(e) { |
} |
// Return true if the option to disable the extension in applets is enabled, |
-// and focus is in an embedded Flash or Java applet. |
-function disabledInApplet(target) { |
- if (!options.disableInApplets) |
+// focus is in an embedded Flash or Java applet, and the current page is not |
+// in the whitelist of pages for which that should not apply. |
+function disabledInApplet(url, target) { |
+ if (!options.disableInApplets || options.whitelist.includes(url)) |
return false; |
var nodeName = target.nodeName.toUpperCase(); |