WorkExtendのスクリプト
WorkExtendを使う時に重要になるのがスクリプトです。WorkExtendのスクリプトには、ブラウザのブックマークレットと同じJavaScriptと、URLスキームを書くことができます。
JavaScriptの場合、引数を渡すことができるなど、ブックマークレットよりできることが多くなっています。
そこでWorkExtend用にJavaScriptを書く時の注意点やコツをご紹介します。
一つの関数として作成する
WorkExtendでは、引数を渡すためにスクリプトに書かれた内容を次の様な形にして実行しています。
(スクリプトの内容)(引数)
即ち、スクリプトを一つの関数として実行しています。
関数には名前をつけても、名前無しの無名関数でも、動作には関係ありません。しかし、関数名に何をする物か分かる名前をつけておくと、あとあと「これなんだっけ?」って事にならなくなりますので、おすすめです。
function PrintHelloWorld(){
alert("Hello world");
}
引数を受け取るには
スクリプトで引数を受け取るには、パラメータのある関数を作成します。
function PrintTet(text){
alert(text);
}
WorkExtendはarg0〜9の値を関数に引数として実行します。すなわちarg0に「こんにちは」とすると次の様に実行されるので「こんにちは」と表示されます。
(function PrintTet(text){
alert(text);
})("こんにちは")
また、arg0を「Hello」とすれば「Hello」と表示されます。
引数を渡すには
引数の値を指定する方法は2通りあります。
スクリプトの設定の「引数」タブで指定
arg0〜9に書いた物がスクリプトを実行した時に常に反映されます。
ここにはIDなど使う人によって異なるけど普段は変わらないものや、URLスキームで指定がなかった時のデフォルト値などを指定する場合に使うと良いと思います。
URLスキームで指定する。
基本的にはこちらを使うことになるかと思います。
WorkExtendでスクリプトを実行するURLスキームは次のようになってます。
work-extend://スクリプト名?引数名1=値1&引数名2=値2&〜
引数名に arg0 などを指定した場合は、スクリプトの設定の「引数」タブで指定したのと同じになります。また「引数」タブで指定されていてもURLスキームで指定した物が優先されます。
また、 arg0 〜 9 はその数字の順番に並べられてスクリプトの関数に引数として渡されます。
arg0 〜 9 以外の引数名の場合、1つだけであればその値だけが引数として、スクリプトの関数にわたされます。 arg0 〜 9 と一緒に使用された場合は、 arg0 〜 9 の引数の次の引数になります。
arg0 〜 9 以外の引数名が複数あった場合、JSONフォーマットの一つの引数として、スクリプトの関数にわたされます。これも arg0 〜 9 と一緒に使用された場合は、 arg0 〜 9 の引数の次の引数になります。
普通は10個も引数があれば事足りるでしょうから、 arg0 〜 9 を使うので十分だと思います。それでも、11個以上指定したいとか、どうしても名前で指定したいという場合でもあっても困らないようになっています。
ただし、引数名には「URL」と「x-success」は使えません。
引数以外にも拡張されています
URLスキームを呼び出す:window.open()
例:
window.open("URLスキーム");
クリップボードに文字を保存する
webkit.messageHandlers.CopyToClipboard.postMessage();
例:「Hello」をクリップボードに入れる。
webkit.messageHandlers.CopyToClipboard.postMessage("Hello");
使用できない物や制限もあります
document.open()
WorkExtendは複数タブ(ウィンドウ)に対応していませんので、動きません。
iOSではhttp:〜のサイトにはアクセスできません
iOSの制限でhttps:のサイトにしかアクセスできません。