タブブラウザ Sleipnir オンラインデータベース
C1-C8-A4-DF-B9-FE-A4-DF-A5-B9-A5-AF-A5-EA-A5-D7-A5-C8-A4-CE-BD-F1-A4-AD-CA-FD-.html

  [ トップ | ヘルプ ]

組み込みスクリプトの書き方 †

組み込みスクリプトとは、UserAction スクリプトSleipnirScriptで実行するよう指定されている SeaHorse スクリプト のことです。
ここでは、JavaScript,VBScript(以下、まとめて スクリプト と表記)などを使って Sleipnir 組み込みスクリプト(SleipnirScript*1)を書く際の書式などを説明します。
JavaScript あるいは VBScript を習得している前提で説明しているのでご了承ください。
なお、スクリプトの使用方法・実行方法に関しては

を参照してください。


↓Sleipnirスクリプト開発に関する質問や情報交換はこちら
Sleipnir Script BBS



Sleipnirスクリプトやブラウザ上で動作するスクリプトとの違い †

通常、Webページ上に HTML と一緒に記述されているスクリプトは、IEなどのブラウザが処理しています。
また、Sleipnirスクリプトは Windows Script Host(WSH) が処理します。
そして、組み込みスクリプトは Sleipnir 独自の実行エンジンが処理します。
故に WSH のプロパティ・メソッドは使用できません。
しかし、IE や Sleipnir のセキュリティ設定で JavaScriptの実行 を OFF にしていても動作しますし、
Sleipnirスクリプトよりも高速に処理します。
ただし、HTMLに記述されるスクリプトでよく使用される window オブジェクトや、document オブジェクトをそのまま使用できないなどの制限もあるのでご注意ください。

window オブジェクト や document オブジェクト を使用する †

Webページ上に HTML と一緒に記述されている JavaScript では、

document.title

でページのタイトルを取得・設定したり、

window.back()

で前のページに戻ったりできますが、
Sleipnirスクリプトでこれらを使用するには書式を少し変える必要があります。

■documentオブジェクト
[JScript]

_document.title = 'すれいぷにる!';

なんてことはありません。document の前に _ (アンダーバー)を付けるだけです。
これでアクティブなウィンドウ(タブ)のタイトルが「すれいぷにる!」になります。

■windowオブジェクト
[JScript]

_window.back();

documentオブジェクトと同じです。window の前に _ (アンダーバー)を付けるだけです。これでアクティブなウィンドウが前のページに戻ります。
なお、

[JScript]

var document = _document;
var window = _window;

などのように定義することで _ (アンダーバー)無しで使うこともできます。

◆注意
WebページのHTML上で onClick="..." などのイベントハンドラの中で参照するいわゆるイベントオブジェクトを組み込みスクリプトで使用することはできません。
ご注意ください。

スクリプトから Sleipnir を操作する †

スクリプトから Sleipnir を操作する変数(定義済み変数)が用意されています。 使用するには

sleipnir.○○○

のように 「sleipnir.」の後に使いたいプロパティ・メソッドを記述するだけです。 例えば、

[JScript]

sleipnir.Beep();

で音を鳴らすことができます。
これ以外のプロパティ・メソッドについては
[Sleipnir インストールフォルダ]\documents\Sleipnir-Script.txt
を見てください。

旧来のSleipnir.APIの使用法 †

Sleipnirでは、Sleipnirスクリプトから Sleipnir を操作するための API (Sleipnir.API)が多数あります。
従来のSleipnirスクリプトでは Sleipnir.API を使用するためには

[JScript]

var pnir = new ActiveXObject("Sleipnir.API");

のように宣言する必要がありましたが組み込みスクリプトでは必要ありません。
(もちろん組み込みスクリプトでも従来のSleipnirスクリプトと同じ方法で Sleipnir.API を使用することが可能です)
組み込みスクリプトで Sleipnir.API を使用するには、

sleipnir.API.○○○

と「sleipnir.API.」の後に使いたい Slepipnir.API を記述するだけです。
長いので

[JScript]

var pnir = sleipnir.API;

と宣言しておき、

pnir.○○○

のように使っても良いでしょう。
では実際に1つ簡単なスクリプトを書いて見ましょう。
今回は面倒なので JavaScript のみです。

[JScript]

sleipnir.API.SearchBarString = 'すれいぷにる!';

検索バーの文字列が「すれいぷにる!」になったはずです。
この他にも Sleipnir.API はたくさんありますが、ここでは省略します。

参照:Sleipnir.API リファレンス

◆注意
Sleipnir.API を使用した組み込みスクリプトを実行する際は
「Sleipnirオプション|クライアント|全般」の「スクリプトによるクライアントの操作を許可する」にチェックを入れてください。
チェックを入れないと Sleipnir.API が使用できずにエラーになります。
Sleipnir.API を使用していない組み込みスクリプトを実行する際は
同オプション項目にチェックを入れる必要はありません。

Sleipnirスクリプトにおける例外処理 †

ページのリンクをクリックしてダウンロードダイアログが出た際に開かれた空白ウィンドウなどでは _window や _document の値が null になってしまい、
そのまま

[JScript]

var str = _document.URL;

などとやった場合にエラーになってしまいます。
エラーになってもスクリプトの実行が停止してエラーメッセージが表示されるだけですが、
一応、対策を施しておきましょう。
方法は人それぞれさまざまですが、一般的には次のようにします。

[JScript]

if (_document == null)  {
	sleipnir.Status = "Document オブジェクトを作成できません";
}
else {
	// TODO: コードをここに記述してください。
	
}

一般的に、documentオブジェクトしか判定する必要は無いです。
どっちかだけが null ということはまずありません。

なお、window オブジェクト も document オブジェクト も使用しないスクリプトの場合は、書く必要は無いでしょう。

テンプレート †

スクリプトを書く際に、毎回白紙から書くのは大変なので、テンプレートを置いておきます。
主に UserAction スクリプト用です。

[JScript]

if (_document == null)  {
	sleipnir.Status = "Document オブジェクトを作成できません";
}
else {
	// TODO: コードをここに記述してください。
	
}

[VBScript]

Option Explicit

If _document Is Nothing Then
	Set sleipnir.Status = "Document オブジェクトを作成できません"
Else
	' TODO: コードをここに記述してください。

End If

その他Sleipnirスクリプトに使用できる言語 †

COMコンポーネントの呼び出しに対応している言語であれば使用できると思います。

Rubyist Magazine - Win32OLE 活用法 【第 7 回】 ほかの言語での COM
python,perl,luaなど
DMonkey
ECMA(JavaScript)準拠の言語。VCLを利用してGUIを利用することが可能な他、その他便利な拡張オブジェクト群。
HSP3
初心者向けの言語。

*1 “Sleipnirスクリプト”とは別物

Last-modified: 2020-12-09 (水) 10:41:54 (2d)