| Index: composer.postload.js | 
| diff --git a/composer.postload.js b/composer.postload.js | 
| index 98fef095aa636d2c8753329fc41d64234e6f839e..e87d0fa874349c7ae02efa1f5c988e368432afad 100644 | 
| --- a/composer.postload.js | 
| +++ b/composer.postload.js | 
| @@ -63,6 +63,11 @@ function getFiltersForElement(element, callback) | 
| function getBlockableElementOrAncestor(element, callback) | 
| { | 
| + // If we're offering to block the iframe element given by window.frameElement | 
| + // we must use the context of the parent frame. | 
| + let document = element.ownerDocument; | 
| + let HTMLElement = document.defaultView.HTMLElement; | 
| + | 
| // We assume that the user doesn't want to block the whole page. | 
| // So we never consider the <html> or <body> element. | 
| while (element && element != document.documentElement && | 
| @@ -121,6 +126,8 @@ function getBlockableElementOrAncestor(element, callback) | 
| // Adds an overlay to an element in order to highlight it. | 
| function addElementOverlay(element) | 
| { | 
| + let document = element.ownerDocument; | 
| + | 
| let position = "absolute"; | 
| let offsetX = window.scrollX; | 
| let offsetY = window.scrollY; | 
| @@ -431,8 +438,11 @@ function elementPicked(event) | 
| highlightElement(currentElement, "#fd1708", "#f6a1b5"); | 
| }); | 
| - event.preventDefault(); | 
| - event.stopPropagation(); | 
| + if (event) | 
| + { | 
| + event.preventDefault(); | 
| + event.stopPropagation(); | 
| + } | 
| } | 
| function stopPickingElement() | 
| @@ -530,10 +540,23 @@ if (document instanceof HTMLDocument) | 
| break; | 
| case "composer.content.contextMenuClicked": | 
| let event = lastRightClickEvent; | 
| + let target = event && event.target; | 
| + | 
| + // When the user attempts to block an element inside an iframe for which | 
| + // our right click event listener was trashed the best we can do is to | 
| + // offer to block the entire iframe. This of course only works if the | 
| + // parent frame is considered to be of the same origin. | 
| + // Note: Since Edge doesn't yet support per-frame messaging[1] we | 
| + // can't use this workaround there yet. (The contextMenuClicked message | 
| + // will be sent to all of the page's frames.) | 
| + // [1] - https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/extensions/api-support/supported-apis/ | 
| + if (!target && window.frameElement && typeof chrome != "undefined") | 
| + target = addElementOverlay(window.frameElement); | 
| + | 
| deactivateBlockElement(); | 
| - if (event) | 
| + if (target) | 
| { | 
| - getBlockableElementOrAncestor(event.target, element => | 
| + getBlockableElementOrAncestor(target, element => | 
| { | 
| if (element) | 
| { |