Interface VMScriptGMObjectVMExtensions

Aliases for GM_ methods that are not included in Greasemonkey4 API

interface VMScriptGMObjectVMExtensions {
    addElement: {
        (tagName, attributes?): HTMLElement;
        (parentNode, tagName, attributes?): HTMLElement;
    };
    addStyle: ((css) => HTMLStyleElement);
    addValueChangeListener: (<T>(name, callback) => string);
    deleteValues: ((names) => Promise<void>);
    download: ((options) => void | Promise<Blob>) | ((url, name) => void | Promise<Blob>);
    getResourceText: ((name) => string);
    getValues: ((names) => Promise<GenericObject>) | ((namesWithDefaults) => Promise<GenericObject>);
    log: ((...args) => void);
    removeValueChangeListener: ((listenerId) => void);
    setValues: ((values) => Promise<void>);
    unregisterMenuCommand: ((caption) => void);
}

Hierarchy (view full)

Properties

addElement: {
    (tagName, attributes?): HTMLElement;
    (parentNode, tagName, attributes?): HTMLElement;
}

Type declaration

    • (tagName, attributes?): HTMLElement
    • Appends and returns an element with the specified attributes.

      Examples:

      // using a private function in `onload`
      let el = GM_addElement('script', { src: 'https://....' });
      el.onload = () => console.log('loaded', el);

      // same as GM_addStyle('a { color:red }')
      let el = GM_addElement('style', { textContent: 'a { color:red }' });

      // appending to an arbitrary node
      let el = GM_addElement(parentElement.shadowRoot, 'iframe', { src: url });

      Parameters

      • tagName: string

        A tag name like script. Any valid HTML tag can be used, but the only motivation for this API was to add script, link, style elements when they are disallowed by a strict Content-Security-Policy of the site e.g. github.com, twitter.com.

      • Optional attributes: Record<string, string>

        The keys are HTML attributes, not DOM properties, except textContent which sets DOM property textContent. The values are strings so if you want to assign a private function to onload you can do it after the element is created.

      Returns HTMLElement

    • (parentNode, tagName, attributes?): HTMLElement
    • Parameters

      • parentNode: HTMLElement

        The parent node to which the new node will be appended. It can be inside ShadowDOM: someElement.shadowRoot. When omitted, it'll be determined automatically:

        • document.head (<head>) for script, link, style, meta tags.
        • document.body (<body>) for other tags or when there's no <head>.
        • document.documentElement (<html> or an XML root node) otherwise.
      • tagName: string

        A tag name like script. Any valid HTML tag can be used, but the only motivation for this API was to add script, link, style elements when they are disallowed by a strict Content-Security-Policy of the site e.g. github.com, twitter.com.

      • Optional attributes: Record<string, string>

        The keys are HTML attributes, not DOM properties, except textContent which sets DOM property textContent. The values are strings so if you want to assign a private function to onload you can do it after the element is created.

      Returns HTMLElement

addStyle: ((css) => HTMLStyleElement)

Type declaration

    • (css): HTMLStyleElement
    • Appends and returns a <style> element with the specified CSS.

      Parameters

      • css: string

      Returns HTMLStyleElement

addValueChangeListener: (<T>(name, callback) => string)

Type declaration

    • <T>(name, callback): string
    • Adds a change listener to the storage and returns the listener ID.

      Type Parameters

      • T

      Parameters

      Returns string

deleteValues: ((names) => Promise<void>)

Type declaration

    • (names): Promise<void>
    • Parameters

      • names: string[]

      Returns Promise<void>

Since

VM2.19.1

download: ((options) => void | Promise<Blob>) | ((url, name) => void | Promise<Blob>)

Type declaration

Type declaration

    • (url, name): void | Promise<Blob>
    • Parameters

      • url: string
      • name: string

      Returns void | Promise<Blob>

getResourceText: ((name) => string)

Type declaration

    • (name): string
    • Retrieves a text resource from the Metadata Block.

      Parameters

      • name: string

        Name of a resource defined in the Metadata Block.

      Returns string

getValues: ((names) => Promise<GenericObject>) | ((namesWithDefaults) => Promise<GenericObject>)

Type declaration

Type declaration

Since

VM2.19.1

log: ((...args) => void)

Type declaration

    • (...args): void
    • The original console.log

      Parameters

      • Rest ...args: any

      Returns void

removeValueChangeListener: ((listenerId) => void)

Type declaration

    • (listenerId): void
    • Removes a change listener by its ID.

      Parameters

      • listenerId: string

      Returns void

setValues: ((values) => Promise<void>)

Type declaration

    • (values): Promise<void>
    • Parameters

      Returns Promise<void>

Since

VM2.19.1

unregisterMenuCommand: ((caption) => void)

Type declaration

    • (caption): void
    • Unregisters a command which has been registered to Violentmonkey popup menu.

      Parameters

      • caption: string

        The name of command to unregister.

      Returns void