This is an archived page. It's not actively maintained.

Warning: Removed in Firefox 65.

The executeScript() method of the HTMLIFrameElement interface allows a specified script to be executed against a page loaded in the browser <iframe>.

Note: Use of the Browser API requires a privileged app, and browser and/or embed-apps permissions, depending on what you want to do. See Using the Browser API for more details.


var myDOMRequest = instanceOfHTMLIframeElement.executeScript(script, options);

Return value

A DOMRequest object that returns an onsuccess handler if the script is successfully executed against the loaded content, or an onerror handler if not.


The script to be executed.
options Optional
Optionally, you can provide an origin or URL for the script to be executed against. It's recommended that you include an origin or URL, in order to ensure that the script is being executed in the expected context:
  • origin: an origin, e.g.
  • url: a URL, e.g.

Note: The options parameter does not currently seem to have much effect. The script seems to execute even if a URL/origin is specified.


var request1 = browser.executeScript(
  var a = 3;
  a + 3
, {url: ''});

request1.onsuccess = function() {
  console.log(request1.result); // 6

var request2 = browser.executeScript(
  new Promise((resolve, reject) => {
    setTimeout(function() {
    }, 1000})
, {origin: ''});

request2.onsuccess = function() {
  console.log(request2.result); // 6

If the script value is a not a Promise, it is simply returned as the request value. If the script value is a Promise, the result of the request will be the Promise-resolved value.


Not part of any specification.

Browser compatibility

Supported since Firefox 47, in chrome code only. Removed completely in Firefox 65.

Unlikely ever to be supported in other browsers.

See also