MyScripts を指先で覚えたい人向けのページです。
特定のブラウザでURLを開く
// Libing の URL スキームを指定する
var scheme = "libhttp";
// URL の先頭の http 部分を置き換えて開く
TARGET = "openurl";
TEXT.replace(/^http/, scheme);
// Sleipnir の URL スキームを指定する
var scheme = "sleipnirblue";
// URL の先頭の http 部分を置き換えて開く
TARGET = "openurl";
TEXT.replace(/^http/, scheme);
要はブラウザの URL スキームさえわかれば機械的にできます。
NowPlaying(再生中の曲情報)をコピーする
SONG という独自変数を使います。SONG は以下のような仕様です。
SONG - 再生中の曲の情報。title/albumTitle/artistの各属性から取得できます。曲を再生していない場合、SONGがnullになります。
if (SONG === null) {
// 音楽が再生中でないとき
// ミュージックを開く
TARGET = "openurl";
"music://";
} else {
// 音楽が再生中のとき
// 曲情報をコピーする
alert("曲情報をコピーします");
TARGET = "copy";
SONG.title + " by " + SONG.artist;
}
コピー内容でGoogle検索する
URL 全体をエンコードするときは encodeURI、クエリ部分の一部をエンコードするときは encodeURIComponent を使います。
Google 検索するときなどは、後者を利用します。
TARGET = "openurl";
"https://www.google.co.jp/search?q=" + encodeURIComponent(TEXT);
MyScripts には、独自変数をエンコードした ENC〜 変数が用意されています。
TEXT 変数に対しては、ENCTEXT 変数が該当します。
この変数を使用することで、GoogleSearch-1 は以下のように書き換えられます。
TARGET = "openurl";
"https://www.google.co.jp/search?q=" + ENCTEXT;
以下蛇足ですが、はまりやすいポイントです。
encodeURIComponent が『!'()*』などをエンコードしてくれないために、まれに予期せぬ動作をすることがあります。
そのようなときは、多少強引ですが、以下のように力技でエンコードします。
// ごり押しエンコード
function encURI(uri) {
var ch;
return encodeURIComponent(uri).replace(/[!'()*]/g, function() {
ch = RegExp.lastMatch;
return ch === "*" ? "%2A" : escape(ch);
});
}
TARGET = "openurl";
"https://www.google.co.jp/search?q=" + encURI(TEXT);
2重エンコードするときなどは、この最後の方法が無難です。
クリップボード制御
クリップボードのテキストを参照するときは、CLIPBOARD 変数を使います。
クリップボードにコピーするときは COPY を使います。
COPY は TARGET="copy"; と異なり、処理の途中でコピーできます。
// クリップボードのテキストを取得
var formula = CLIPBOARD;
var result;
try {
// クリップボードの式を計算
result = eval(formula);
// 結果をコピー
COPY(result);
} catch (e) {
// クリップボードのテキストが計算式以外のとき
// エラーメッセージを表示
result = e.message;
}
TARGET = "info";
result;
HTMLを自動生成する
MyScripts では、TEXT 変数から入力データを受け取り、加工して、それを元に HTML を生成することができます。
多くの場合は #HTML で十分なのですが、IS_HTML = true; を使用した方が便利なこともあります。
ここではその開発の手順を示します。
1. #HTML でプロトタイプを作成します。最終的には不要になりますが、これがあるとメンテナンスしやすくなります。
#HTML
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
<title>grep</title>
<link rel="stylesheet" href="./jqm/jquery.mobile.css">
<script src="./jquery.js"></script>
<script src="./jqm/jquery.mobile.js"></script>
<script>
function append(lines) {
var $list = $('#grep-list');
for (var i = 0; i < lines.length; i++)
$('<li>').text(lines[i]).appendTo($list);
$list.listview('refresh');
}
onload = function() {
var lines = TEXT.split('\n');
append(lines);
}
</script>
</head>
<body>
<section data-role="page">
<header data-role="header" data-position="fixed">
<h1>grep</h1>
</header>
<div data-role="content">
<ul id="grep-list" data-role="listview" data-filter="true" data-filter-placeholder="Filter lines...">
</ul>
</div>
</section>
</body>
</html>
2. 最終的に他のアプリで開くならば、jQuery Mobile や Twitter Bootstrap のファイルを外部参照するよう修正する
上記の箇所を以下のように修正する。
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css">
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
3. 先頭の #HTML を除いた部分を選択し、コピーする
5. ファイル名などの指定や、HTML を修正する記述を行う
var html = "<!DOCTYPE html>\n<html>\n <head>\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,user-scalable=no\">\n <title>grep</title>\n <link rel=\"stylesheet\" href=\"http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css\">\n <script src=\"http://code.jquery.com/jquery-1.8.2.min.js\"></script>\n <script src=\"http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js\"></script>\n <script>\nfunction append(lines) {\n var $list = $('#grep-list');\n\n for (var i = 0; i < lines.length; i++)\n $('<li>').text(lines[i]).appendTo($list);\n\n $list.listview('refresh');\n}\n\nonload = function() {\n var lines = decodeURIComponent('";
html += ENCTEXT;
html += "').split('\\n');\n append(lines);\n}\n </script>\n </head>\n <body>\n <section data-role=\"page\">\n <header data-role=\"header\" data-position=\"fixed\">\n <h1>grep</h1>\n </header>\n <div data-role=\"content\">\n <ul id=\"grep-list\" data-role=\"listview\" data-filter=\"true\" data-filter-placeholder=\"Filter lines...\">\n </ul>\n </div>\n </section>\n </body>\n</html>";
FILENAME = "grep";
IS_HTML = true;
TARGET="openin";
html;
openin することで、生成したHTMLを別アプリで開きます。HTML が使える別アプリとの連携にも、MyScripts は使えるわけです。
最終更新:2013年02月18日 23:23