坤坤スクリプト

作成ガイド

ここで公開したスクリプトは坤坤ブラウザにインストールします。クライアントは油猴に近いですが、デスクトップ版そのものではありません。公開前に次の規則を確認すると、インストール失敗や更新されない事態を減らせます。

サイトの言語は URL のディレクトリです。例:/zh-CN/、/zh-TW/、/ja/、/ko/、/id/、/en/。一覧は既定でその言語のスクリプトだけです。インストール URL /s/番号.user.js に言語ディレクトリは付きません。

公開

  1. 登録してログインします。
  2. 「公開」を開き、完全なソースを貼ります。ソースには ==UserScript== ヘッダーが必要です。
  3. 更新するときはそのスクリプトの「新しいバージョンを公開」を開き、新しいソースを貼ります。スクリプト ID は変えないでください。変えるとインストール済みのユーザーに更新が届きません。

1 人 50 件までです。非公開にするとインストールリンクは 404 になり、検索にも出ません。

最小限のスクリプト

// ==UserScript==
// @name         サンプルスクリプト
// @namespace    https://scripts.ikunbrowser.com
// @version      1.0.0
// @description  サンプルページに一文を足す
// @match        https://example.com/*
// @grant        none
// ==/UserScript==

(function () {
  document.body.insertAdjacentHTML("beforeend", "<p>サンプルが動きました</p>");
})();

メタデータ

少なくとも @name と、@match または @include が必要です。

フィールド説明
@name言語サフィックスのない名前を優先します。@name:zh-CN のようなローカライズ名しかないときは最初の1件を使います。
@name:zh-CN @description:ja言語付きの名前と説明です。対応するディレクトリではそれを優先します。単独の @name がないときは、最初のローカライズ名でスクリプトの言語を決めます。
@namespace @version @description書くことを勧めます。@description:xx は既定の説明がないときだけ使われます。
@matchChrome のマッチです。*://、*.example.com、<all_urls> が使えます。 サイトページはこれらの規則のドメインでスクリプトを一覧します。URL は /scripts/by-site/example.com のような形です。
@include @excludeワイルドカード * ?、または /正規表現/i。
@exclude-matchmatch 規則で除外します。
@run-atdocument-start / document-end / document-body / document-idle。省略すると idle です。
@noframes子フレームでは動きません。
@grant未知の権限でもインストールは失敗しません。未実装の関数はありますが、何もしません。
@require @resourcehttp または https のみ。それぞれ最大 8 個です。data:、file:、相対パスはインストールに失敗します。
@connect @icon @authorクライアントは無視し、インストールには影響しません。

マッチと除外はそれぞれ最大 64 件です。@require は 1 件 512KB 以下、合計約 1MB。@resource は 1 件 256KB 以下です。

更新

クライアントはセマンティックバージョン比較をしません。新しい @version は前後の空白を除いた文字列が現在と違う必要があります。ユーザーが手動で更新確認したときだけ入れ替わります。両方空でも同じとみなします。

/s/{id}.user.js を配信するとき、このサイトはメタデータブロックの先頭に @downloadURL と @updateURL を挿入し、どちらもその URL を指します。クライアントは最初の1件だけを見るので、後ろに書いた更新 URL は頼りになりません。@updateURL を .meta.js にしないでください。クライアントはその URL を飛ばします。

ブラウザはバックグラウンドで自動更新しません。ユーザーは「設定 → ユーザースクリプト」で手動確認します。

インストールリンク

詳細ページの「インストール」は普通の .user.js リンクです。坤坤ブラウザは .user.js で終わる http(s) URL を横取りして確認を出します。特別なプロトコルは不要です。

Greasy Fork と同じアドレスにも対応します。/scripts/番号.user.js、/scripts/番号.meta.js、/scripts/番号/code/名前.user.js、/scripts/番号-名前 の詳細、/scripts/番号.json です。坤坤ブラウザへの更新 URL は引き続き /s/番号.user.js です。

同じスクリプト、同じ日、同じ IP ではインストールは 1 回だけ数えます。

クライアントで使える API

同期の GM_* と Promise 版の GM.* の両方が注入されます。スクリプトはページのコンテキストで動き、unsafeWindow はページの window そのものです。独立したサンドボックスはありません。

API動作
GM_addStyle GM_addElementスタイルまたは要素を挿入します。
GM_getValueスクリプトごとに分離してローカルに保存します。1 つの値は最大 32KB です。変更監視は現在のページだけで、タブをまたぎません。
GM_xmlhttpRequest一般的なメソッドと arraybuffer / blob に対応します。リクエスト本文は最大 256KB、レスポンスは最大 1MB です。公開インターネットの http(s) のみで、ローカルアドレスは拒否されます。ページ JS もブラウザプロキシも通りません。
GM_setClipboard GM_download GM_openInTabクリップボード、アプリ内のダウンロード確認、新しいタブで http(s) を開きます。
GM_getResourceText GM_getResourceURLインストール時にキャッシュしたリソースを読みます。
GM_registerMenuCommand現在のページでコマンドを登録すると、下部バーに「スクリプトコマンド」が出ます。
GM_notification通知を表示するだけで、クリックのコールバックはありません。
GM_getTab現在のスクリプトプロセス内のメモリオブジェクトだけで、複数ウィンドウではありません。

次のものは @grant を書いてもインストールできますが、関数は何もしません。GM_cookie、GM_webRequest、および上の表にない権限です。リクエストの改変や Cookie の読み書きに依存しないでください。

実行時の注意

向いているスクリプト

DOM の変更、スタイル追加、少量の設定保存、たまにリクエスト、クリップボード、ファイルのダウンロード、メニューでの切り替え、jQuery のような @require に向いています。

Cookie への強い依存、通信の横取り、文書の本当の先頭への厳密な依存、厳しい CSP、非常に大きいスクリプトや依存には向いていません。