エクステンション開発

当コンテンツを利用するには Sleipnir Mobile for Android が必要です。

エクステンションはJavaScript で開発します。
Greasemonkey スクリプトの仕様に倣っていますので、Greasemonkey スクリプトを開発したことがあれば容易に理解できる仕様となっています。

エクステンションは JavaScript のソースファイル1つから成ります。
エンコードは UTF-8 です。ファイル名は *.slex.js にしてください。
アプリケーションで *.slex.js のリンクを開くと、インストールダイアログが表示されます。

// ==UserScript==
// @name            Sample extension
// @name:ja         サンプルエクステンション
// @author          fenrir_dev
// @description     This is a sample extension.
// @description     Inserts current date to fenrir-inc.com pages.
// @description:ja  サンプルエクステンションです。
// @description:ja  日付をfenrir-inc.comのページに挿入します。
// @icon            http://extensions.fenrir-inc.com/sample/icon.png
// @include         http://*.fenrir-inc.com/*
// @exclude         http://*.fenrir-inc.com/*/dev/*
// @exclude         http://*.fenrir-inc.com/*/admin/*
// @version         0.2.1
// @history         0.2.1 Fixed some bugs.
// @history:ja      0.2.1 いくつかバグ修正。
// @history         0.2   Improved something.
// @history:ja      0.2   なにか改善。
// @history         0.2   Fixed something.
// @history:ja      0.2   なにか修正。
// @history         0.1   Initial version.
// @history:ja      0.1   最初のバージョン。
// @require         jquery
// ==/UserScript==

var str_date = " Date: ";
switch(SLEX_locale) {
  case "ja":
    str_date = " 日付: ";
    break;
}

$("body").prepend('<div style="position:absolute;z-index:9999;top:0;left:0;">' + str_date + new Date() + '</div>');

メタデータは名前や作者名といったエクステンション自体の情報を定義するデータです。

// ==UserScript==

から

// ==/UserScript==

で囲まれたコメントブロックがメタデータとして解釈されます。

メタデータの各行のフォーマットは次のようになります。

<0個以上の空白文字>//<0個以上の空白文字><メタデータ名><1個以上の空白文字><メタデータ値>

メタデータ一覧

メタデータ 意味 省略 複数
@name <名前> 英語でのエクステンション名。 x x
@name:ja <名前> 日本語でのエクステンション名。 o x
@author <名前> 英語での作者名。 x x
@description <説明文> 英語での詳細説明。 x o
@description:ja <説明文> 日本語での詳細説明。 o o
@icon <BASE64データ> アイコン。BASE64でエンコードしたバイナリデータを指定。フォーマットはPNG。推奨サイズは128x128。 o x
@include <対象URL> 実行対象とするURL。ワイルドカード可。正規表現は不可。 x o
@exclude <除外URL> 実行対象から除外するURL。ワイルドカード可。正規表現は不可。 o o
@android-version <バージョン番号> このエクステンションが動作する Android のバージョンを指定します。Android のバージョンに依存せず動作する場合は、指定する必要はありません。 o o
@version <バージョン番号> このエクステンションのバージョン番号。 x x
@history <バージョン番号> <説明> 英語での各バージョンの変更履歴。複数指定する場合は新しいバージョンから降順に記述してください。 o o
@history:ja <バージョン番号> <説明> 日本語での各バージョンの変更履歴。複数指定する場合は新しいバージョンから降順に記述してください。 o o
@require <機能名> 有効にするスクリプト機能を指定。Greasemonkey の @require とは異なるので注意。 o o
@origin <URL> 拡張ファイルのダウンロード元 URL。基本的に指定する必要はありません。Sleipnir Mobile Extensions Center 以外で配布している拡張ファイルの ID として扱います。 o x
@gallery-id <ID> Extensions Gallery での ID を表します。このメタデータは配布サイトが投稿されたスクリプトに対し自動的に付加します。配布サイト以外でインストールしたスクリプトにこのメタデータが付いていた場合、無視します。 o x

スクリプト機能一覧

スクリプト機能名 詳細
api エクステンション API を利用可能にします。信頼できないサイトを実行対象にする場合は使用しないでください。
jquery jQuery 1.7.1 を利用可能にします。
xpath XPath を利用可能にします。http://mcc.id.au/xpathjs で公開されている実装を利用しています。
api-notification 通知に関するエクステンション API を利用可能にします。信頼できないサイトを実行対象にする場合は使用しないでください。
(Sleipnir Mobile for Android 2.12 以上)

@android-version で指定できる値

以下のような値を指定することができます。

例として、 Android 2.3.x のみで動作することを表したい場合、以下のようなメタデータにします。

// @android-version 2.3
// @android-version 2.3.3
// @android-version 2.3.4
// @android-version 2.3.5
// @android-version 2.3.6
// @android-version 2.3.7

バージョン番号の制限

バージョンはドットで区切られた数値の列で表します。最大 4 つの数値を使用でき、各数値の範囲は [0, 65535] です。

例:

エクステンション API は、アプリケーションが提供する機能群で、エクステンションの JavaScript コードから利用することができます。

SLEX_showNotification(text, [, callback])

アドレスバーに通知を表示します。
利用には "@require api-notification" が必要です。(Sleipnir Mobile for Android 2.12 以上)

使用例:

function myCallback() {
  alert('callback');
}
SLEX_showNotification('notification', myCallback);

SLEX_addStyle(str)

CSS を追加します。
利用には "@require api" が必要です。

使用例:

SLEX_addStyle('body{font-size:24px;color:#000;} a:hover{text-decoration:underline;}');

SLEX_httpGet(url [, data])

HTTP GET リクエストでサーバーからデータを取得し、文字列として返します。エラーの場合は null を返します。クロスドメイン制約はありません。
利用には "@require api" が必要です。

  • url: リクエストを送信する URL。
  • data: 送信するパラメータ。

使用例:

SLEX_httpGet('http://en.wikipedia.org/wiki/Special:Search', {'search': 'android', 'go': 'Go'});

SLEX_httpPost(url [, data])

HTTP POST リクエストでサーバーからデータを取得し、文字列として返します。エラーの場合は null を返します。クロスドメイン制約はありません。
利用には "@require api" が必要です。

  • url: リクエストを送信する URL。
  • data: 送信するパラメータ。

使用例:

SLEX_httpPost('http://www.sleipnirstart.com/', {'keywd': 'aaa', 'eng': 'fs'});

SLEX_download(url [, filename])

アプリケーションのダウンローダでファイルをダウンロードします。
利用には "@require api" が必要です。

  • url: ダウンロードする URL。
  • filename: ダウンロード先のファイル名。省略した場合、適当な名前にします。

使用例:

SLEX_download("http://fenrir-inc.com/", "index.html");

SLEX_shareUrl(url)

URL をインテントで別アプリケーションで開きます。
利用には "@require api" が必要です。

  • url: 開く URL。

使用例:

SLEX_shareUri('http://m.sleipnirstart.com/');

SLEX_shareText(text [, subject])

テキストをインテントで別アプリケーションに渡します。
利用には "@require api" が必要です。

  • text: 送るテキスト。
  • subject: 送る件名。省略可能。

使用例:

SLEX_shareText('content', 'title');

SLEX_locale

現在のロケール値の文字列変数。以下の値を取ります。
利用には "@require api" が必要です。

  • "en"
  • "ja"

使用例:

var str_msg = "Message";
switch( SLEX_locale ) {
    case "ja":
        str_msg = "メッセージ";
        break;
}
トップ
ヘルプ
エクステンション開発