Saltar al contenido principal

Documentación API

Resumen

Las definiciones de API de esta extensión se basan en la documentación de Tampermonkey. Solo se ha implementado parte de la API hasta ahora, y seguirá iterando. Cada API que esta extensión extiende o que difiere de la API GM original está especialmente marcada en la documentación (usando *). Algunas APIs también proporcionan una contraparte de estilo sincrónico siguiendo la regla GM.*.

Para las definiciones detalladas de la API, consulte scriptcat.d.ts o las sugerencias integradas del editor. Para APIs específicas de esta extensión, consulte la Documentación CatApi.

También puede encontrar ejemplos relacionados en el directorio de ejemplos.

Definiciones

GM_info

Obtiene información sobre el script, incluyendo metadatos y parámetros del entorno de ejecución.

console.log(GM_info.scriptHandler);
console.log(GM_info.version);
console.log(GM_info.scriptMetaStr);
  • sandboxMode actualmente solo tiene el valor raw. runAt no es compatible.

GM_log *

Función de registro. Los logs de un script de fondo se pueden ver en el registro de ejecución del panel.

declare function GM_log(message: string, level?: GMTypes.LoggerLevel): void;
declare namespace GMTypes {
type LoggerLevel = "debug" | "info" | "warn" | "error";
}
GM_log("debug info", "debug");

GM_get/set/deleteValue

Obtiene o establece un valor en el almacenamiento. Los datos bajo el mismo storageName se pueden compartir y sincronizar en tiempo real.

declare function GM_setValue(name: string, value: any): void;
declare function GM_getValue(name: string, defaultValue?: any): any | undefined;
declare function GM_deleteValue(name: string): void;
GM_setValue("foo", 42);
const v = GM_getValue("foo", 0);
GM_deleteValue("foo");

Nota: Cuando se llama a GM_setValue con undefined, ScriptCat elimina esa clave, a diferencia de Tampermonkey/GreaseMonkey que almacena undefined como valor.

Nota: Debido a que las operaciones de datos son asincrónicas, llamar a window.close() inmediatamente después de GM_setValue o GM_deleteValue puede impedir que los datos se actualicen correctamente. Se recomienda usar await GM.setValue o await GM.deleteValue.

GM_listValues

Lista todas las claves.

declare function GM_listValues(): string[];
console.log(GM_listValues());

GM_setValues / GM_getValues / GM_deleteValues *

APIs de obtención/establecimiento por lotes (extensión).

declare function GM_setValues(values: { [key: string]: any }): void;
declare function GM_getValues(keysOrDefaults: { [key: string]: any } | string[] | null | undefined): { [key: string]: any };
declare function GM_deleteValues(names: string[]): void;
GM_setValues({ a: 1, b: 2 });
const { a, b, c = 3 } = GM_getValues({ a: 0, b: 0, c: 3 });
GM_deleteValues(["a", "b"]);

GM_add/removeValueChangeListener

tabid fue eliminado después de 0.17.0-alpha.

Escucha cambios en un valor. add devuelve un ID de listener, remove se puede usar para cancelar.

type ValueChangeListener = (name: string, oldValue: any, newValue: any, remote: boolean, tabid?: number) => any;
declare function GM_addValueChangeListener(name: string, listener: GMTypes.ValueChangeListener): number;
declare function GM_removeValueChangeListener(listenerId: number): void;
const id = GM_addValueChangeListener("foo", (k, oldV, newV, remote) => {
console.log(k, oldV, newV, remote);
});
GM_removeValueChangeListener(id);

GM_getResourceText/GM_getResourceURL

Obtiene información de recursos declarados con @resource.

declare function GM_getResourceText(name: string): string | undefined;
declare function GM_getResourceURL(name: string, isBlobUrl?: boolean): string | undefined;
const css = GM_getResourceText("mystyle");
const imgUrl = GM_getResourceURL("logo");

GM_addElement

Inserta un elemento en la página. Puede eludir restricciones CSP.

declare function GM_addElement(tag: string, attributes: any): HTMLElement;
declare function GM_addElement(parentNode: Element, tag: string, attrs: any): HTMLElement;
GM_addElement("script", { src: "https://example.com/app.js" });
GM_addElement(document.head, "style", { textContent: ".foo{color:blue}" });

GM_addStyle

Agrega un estilo a la página y devuelve el nodo DOM del estilo. Puede eludir restricciones CSP.

declare function GM_addStyle(css: string): HTMLElement;

GM_openInTab *

Abre una nueva ventana.

declare function GM_openInTab(url: string, options: GMTypes.OpenTabOptions): GMTypes.Tab;
declare function GM_openInTab(url: string, loadInBackground: boolean): GMTypes.Tab;
declare function GM_openInTab(url: string): GMTypes.Tab;

declare namespace GMTypes {
interface OpenTabOptions {
active?: boolean;
insert?: boolean | number;
setParent?: boolean;
incognito?: boolean;
loadInBackground?: boolean;
pinned?: boolean;
useOpen?: boolean;
}
interface Tab {
close(): void;
onclose?: () => void;
closed?: boolean;
name?: string;
}
}
const tab = GM_openInTab("https://example.com", { active: false });
tab.onclose = () => console.log("closed");
tab.close();

GM_get/saveTab/GM_getTabs

Un método para almacenar datos similar a GM_setValue, pero la vida útil de este método está vinculada al ciclo abrir→cerrar de una sola pestaña del navegador.

declare function GM_getTab(callback: (obj: object) => void): void;
declare function GM_saveTab(obj: object): void;
declare function GM_getTabs(callback: (objs: { [key: number]: object }) => void): void;
GM_saveTab({ foo: 1 }, () => console.log("saved"));
GM_getTab(tab => console.log(tab));
GM_getTabs(tabs => console.log(tabs));

GM_registerMenuCommand *

  • Registra un elemento de menú que aparece en la página emergente y el menú contextual.
  • Por defecto, los elementos de menú con el mismo texto solo se muestran una vez.
  • Especificar un id permite actualizar el elemento.
function GM_registerMenuCommand(name: string, listener?: (inputValue?: any) => void, options_or_accessKey?: { id?: number | string; accessKey?: string; autoClose?: boolean; nested?: boolean; individual?: boolean; } | string): number;

GM_unregisterMenuCommand

Elimina un elemento de menú registrado por su ID.

declare function GM_unregisterMenuCommand(id: number): void;

GM_notification *

Envía un mensaje de notificación, proporcionando capacidades de progress y buttons. También proporciona GM_closeNotification y GM_updateNotification.

example

declare function GM_notification(details: GMTypes.NotificationDetails, ondone?: GMTypes.NotificationOnDone): void;
declare function GM_notification(text: string, title: string, image: string, onclick: GMTypes.NotificationOnClick): void;
declare function GM_closeNotification(id: string): void;
declare function GM_updateNotification(id: string, details: GMTypes.NotificationDetails): void;
GM_notification({ title: "Progress", text: "Loading", progress: 50 });

Nota: GM_closeNotification y GM_updateNotification son específicos de ScriptCat. Use tag para actualizar.

GM_setClipboard *

Establece el portapapeles. Aún no se admite callback.

declare function GM_setClipboard(data: string, info?: string | { type?: string; mimetype?: string }): void;
GM_setClipboard("Hello World", "text");

GM_xmlhttpRequest *

  • Una solicitud HTTP de origen cruzado que puede eludir CSP. Se requiere autorización de usuario; los hosts descritos por @connect pueden saltarse la autorización.
declare function GM_xmlhttpRequest(details: GMTypes.XHRDetails): GMTypes.AbortHandle<void>;
GM_xmlhttpRequest({
method: "GET",
url: "https://api.example.com/data",
onload: res => console.log(res.responseText)
});

GM_download

  • Descarga un archivo. Devuelve un objeto Promise y proporciona un método abort().
declare function GM_download(details: GMTypes.DownloadDetails): GMTypes.AbortHandle<boolean>;
declare function GM_download(url: string, filename: string): GMTypes.AbortHandle<boolean>;
const dl = GM_download({ url: "https://example.com/file.zip", name: "file.zip", onload: () => alert("Done") });
dl.abort();

Opera asincrónicamente con las cookies de la página, admitiendo cookies de origen cruzado, HttpOnly y particionadas.

Después de v0.17.0-alpha, se eliminaron los parámetros relacionados con store y tabid.

El host operado debe declararse con @connect y requiere autorización de usuario.

declare function GM_cookie(action: GMTypes.CookieAction, details: GMTypes.CookieDetails, ondone: (cookie: GMTypes.Cookie[], error: unknown | undefined) => void): void;

Nota: Debe declarar el dominio permitido en los metadatos usando @connect example.com.