| Index: go-back-with-backspace/is_editable.js | 
| diff --git a/go-back-with-backspace/is_editable.js b/go-back-with-backspace/is_editable.js | 
| index d0e4114ebee40f58b60fb4a8a973e24391118a08..9e26cdcd38ffaaa5020b69a9f12ce40e1fbfc945 100644 | 
| --- a/go-back-with-backspace/is_editable.js | 
| +++ b/go-back-with-backspace/is_editable.js | 
| @@ -1,11 +1,13 @@ | 
| // Determine whether focus is in an editable text field. | 
| -function isEditable(path) { | 
| -  var target = path[0]; | 
| - | 
| +function isEditable(target) { | 
| // Elements may be explicitly marked as editable. | 
| if (target.isContentEditable) | 
| return true; | 
|  | 
| +  // Entire documents may be editable. | 
| +  if (target.ownerDocument.designMode.toLowerCase() === 'on') | 
| +    return true; | 
| + | 
| // Many types of input fields are editable, but not all (e.g., checkboxes). | 
| var nodeName = target.nodeName.toUpperCase(); | 
| var nodeType = target.type || ''; | 
| @@ -29,14 +31,16 @@ function isEditable(path) { | 
|  | 
| // Certain CSS styles, on elements or their parents, also indicate editable | 
| // fields. | 
| -  var pathLength = path.length; | 
| -  for (var i = 0; i < pathLength; ++i) { | 
| -    target = path[i]; | 
| +  while (target) { | 
| if (target.nodeType == 1) { // Only Elements have computed styles. | 
| -      var userModify = getComputedStyle(path[i])['-webkit-user-select']; | 
| -      if (userModify == 'read-write' || userModify == 'write-only') | 
| +      var userModify = getComputedStyle(target)['-webkit-user-modify']; | 
| +      if (userModify === 'read-write' || | 
| +          userModify === 'write-only' || | 
| +          userModify === 'read-write-plaintext-only') { | 
| return true; | 
| +      } | 
| } | 
| +    target = target.parentNode || null; | 
| } | 
| return false; | 
| } | 
|  |