Content Script Injection
From Greasespot Wiki
Jump to navigationJump to search
Warning: The contents of this page are not accurate when used with Greasemonkey 4.0.
For scripts which @grant any privileged APIs, these methods are provided in a privileged scope which is intentionally isolated from the content page.
The same functionality is available by calling window.eval() to explicitly target the content window scope for execution.
(Note that a bare eval() executes in the script scope.)
// ==UserScript== // @name Content Script Example, grant none // @grant none // ==/UserScript== // Because I am a "@grant none" script, I operate right in the content scope. // I can call functions defined by the page with no problems. let result = functionFromContentScope(); // Similarly, I can export values or functions to that scope for it to call. window.someVariable = 'someValue';
// ==UserScript==
// @name Content Script Example, privileged grant
// @grant GM_log
// ==/UserScript==
// Because I am *not* a "@grant none" script, I operate in my own private,
// privileged scope. I can call functions defined by the page only by
// explicitly referencing the window:
let result = window.eval('functionFromContentScope();')
// Similarly, I can export values or functions to that scope for it to call.
window.eval("window.someVariable = 'someValue';");