スクリプト
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#t13ed884]
#contents
*スクリプトとは [#m4da1bc8]
参照: [[V2C 使用法 外部コマンド:スクリプト>http://v2c.s5...
V2Cには''スクリプト''と、''System系スクリプト''があり、次...
どちらも[[スクリプト一覧]]からファイルを入手し、設定する...
**スクリプト [#m9b58a3b]
-[[外部コマンド]]に登録することよってV2Cの機能を拡張して&...
-V2Cユーザーが個別に自由な名前を付けて配布・利用すること...
**System系スクリプト [#le7a307a]
-V2Cの[[設定ファイル]]です。V2C本体の動作(更新、書き込み...
-名前が決まっているため、一ファイル内に複数の機能がまとめ...
-System系スクリプトの一覧は[[設定ファイル]]の&color(#ff00...
*スクリプトの実行に関する注意点 [#g3441419]
スクリプトは様々な理由から&color(red){エラーの発生や不具...
自分で修正できない人は、&color(red){どのスクリプトでエラ...
(エラーメッセージはメニューの「表示」→「最後のエラーメッ...
誰かが修正してくれるかもしれません。
また、自分で修正できる方はスクリプトスレで修正版を公開し...
*スクリプトの設定方法 [#kee102f6]
参照: [[V2C 使用法 外部コマンド設定>http://v2c.s50.xrea.c...
ここでは[[スクリプト/tree.js]]を例に解説します。
+''スクリプトをインストールするフォルダを作成する。''&br;...
+''スクリプトファイルを入手し、"script"フォルダに入れる。...
++スクリプトの主な入手先
+++[[スクリプト一覧]]からダウンロードする。&br;tree.jsを...
+++[[スクリプトスレ@V2C掲示板>過去スレリスト/V2C掲示板#d...
++その他の入手先
+++[[V2C関連スレ用アップローダー>http://loda.jp/v2cthread...
+++[[頂き物スクリプト>http://v2c.s50.xrea.com/contrib/scr...
+''スクリプト一覧の[[詳細>スクリプト/tree.js]]か、スクリ...
++''【登録場所】''&br;''全体 レス表示''&br;V2Cの「メニュ...
+++''【ラベル】''&br;''&color(blue){被参照レスでツリー表...
+++''【コマンド】''&br;''&color(blue){$SCRIPT tree.js};''...
+++''ID''&br;&color(blue){''10''}; と記入する。(記入は任...
+''追加ボタンを押し、一覧に追加されたことを確認し、OKを押...
#ref(./外部コマンドの設定.jpg,記入した状態)
参考:ぶるるる [[V2CでJaneにもあったレスツリーを表示>http...
**使い方 [#x89958da]
【登録場所】に従って登録した場所から、スクリプトを実行す...
***例)レス表示に登録したtree.jsを使用する [#md41a693]
レスが表示されてる上(レス番の上ではないので注意!)で右...
**備考 [#j7c2816d]
***マウスジェスチャに登録 [#r8794571]
いちいち右クリック→選択という操作が面倒だという場合は、マ...
***ツールバーボタン・お気に入りに登録 [#z225e9fa]
[[ツールバーボタン]]のボタン登録領域を右クリック、もしく...
これらからのみ使用可能な専用スクリプト(スレッド一覧表示可...
***マウスオーバーで実行 [#a25ec820]
T20100813からURLExec2.dat経由で使用できるようになりました。
以下はマウスオーバーを活用したスクリプトです。
-[[スクリプト/PopupStatusNicovideo.js]]
…ニコニコ動画の動画情報をマウスオーバーでポップアップ
-[[スクリプト/PopupStatusYoutube.js]]
…Youtubeの動画情報をマウスオーバーでポップアップ
-[[スクリプト/popupTweet.js]]
…Twitterのつぶやきをマウスオーバーでポップアップ
***ポップアップのレイアウトを変更 [#rb5a79d5]
このtree.jsは、動的にHTMLを作ってそれをV2Cがポップアップ...
例えば、tree.jsの下のほうにあるCSSの設定の下記の行で、''x...
body{margin:5px 0 5px 5px; font-size: x-small;}
***ポップアップからマウスを外した時にポップアップを閉じる...
通常、スクリプトでのポップアップはクリックしないと閉じま...
ただし、スクリプト内に専用の設定を記述する必要があります...
自分で設定し直す場合は以下のようにすれば有効にできます。
// 適用したいスクリプトをテキストエディタ(文字コードはUT...
v2c.context.setDefaultCloseOnMouseExit(true);// を先頭行...
通常は上記で問題ないですが、各ポップアップ毎に設定を変え...
// 適用したいスクリプトをテキストエディタ(文字コードはUT...
setPopupText(***)// か
setPopupHTML(***)// という行を探して(***は何かしらの文...
v2c.context.setCloseOnMouseExit(true); //という行を追加...
***ポップアップの文字列を選択出来るようにする [#r4a3086e]
// 適用したいスクリプトをテキストエディタ(文字コードはUT...
setPopupText(***)// か
setPopupHTML(***)// という行を探して(***は何かしらの文...
v2c.context.setPopupFocusable(true);// という行を追加し...
選択文字列に対する右クリックメニューはコピーと外部コマン...
また、コピペでは一部改行されない等の制限があります。
さらに、一部の外部コマンドはエラーが出て使用できない可能...
***その他 [#td3e9e20]
-スクリプトファイル名を<>で囲むとV2Cの内部スクリプトを指...
-ファイルの拡張子は".js"である必要はありません。
*System系スクリプトの設定方法 [#e842025d]
ここではスクリプトのひとつ、[[スクリプト/rescheck.js]]を...
+''スクリプトをインストールするフォルダを作成する。''&br;...
+''スクリプトファイルを入手し、"system"フォルダに入れる。...
+''スクリプトファイルの中身を確認・編集する。''&br;以下の...
+''スクリプトのパーミッション設定''&br;今回の例ではこの操...
+''スクリプトの読み込み''&br;「メインメニュー」→「ファイ...
**使い方 [#x2caa67d]
起動に成功すれば、所定の動作で条件が合えば機能が自動実行...
***例)rescheck.jsの機能を使用する。 [#s3122c62]
更新して新着レスを取得するなどすれば、設定例だと、URLの行...
----
*スクリプトFAQ [#ka5225ec]
**スクリプト実行時に「Cannot run program~」というエラー...
パス区切り記号としての¥(バックスラッシュ)が1つしかない...
WindowsのFirefoxで2chのHPを表示させる例:
v2c.exec('"C:\\Program Files\\Mozilla Firefox\\firefox.e...
と言ったように、¥は2つ記述する必要があります。
**スクリプト実行時に「access denied」や「~Permission」と...
パーミッションの設定が間違っている可能性が高いです。
下記の外部コマンド登録例でいうとFの部分です。
${SCRIPT:F} hoge.js
各スクリプトで指定する文字は異なります。
基本的にスクリプトファイル(~.js)の中に設定法が書いてあ...
マウスオーバーでスクリプトを起動するようにしている場合は...
post.js等のフォルダに保存するだけで適用されるシステム系ス...
**スクリプト実行時に「Cannot find function~」というエラ...
V2Cの最新機能の可能性があります。V2Cを更新してください。
テスト版の場合は更新チェックの対象にならないため本スレ,...
**Javaを更新後、スクリプト実行時に「Cannot add a property...
スクリプトの修正が必要となります。
1.7.0_01(1.6.0_29)以降に採用されているRhinoが更新されたた...
このためホストオブジェクトに新たなプロパティを追加するコ...
**.jsファイルの数が多く、フォルダ内がごった返しているので...
'/'または'\'を区切り文字として
サブフォルダ内のスクリプトファイルを指定することができま...
//scriptフォルダ内にtestという名前のフォルダを作りそこに...
$SCRIPT test/example.js
-"system"と"lib"は予約フォルダ名ということにしておいてく...
-v2c.getScriptSubFile(n) による他のスクリプトファイル名と...
//*(作成・編集者向け)スクリプトFAQ
*スクリプト開発者向け情報 [#tfdec5d0]
|書きかけの項目です。加筆、訂正募集中。|
//参考:ぶるるる [[V2Cスクリプト作成メモ>http://sarasate....
//>本当はwikiに書きたいところだけど、こっちの方が気楽に書...
//ソース例:
//#highlight(linenumber,javascript){{
//function test() {
// var hoge = "テスト";
// v2c.println(hoge);
//};
//test();
//}}
//
//汎用性のあるスクリプトテンプレートってのはどうですかね。
//例えば、クリップボードの内容を特定のソフトに引数を付け...
//http://yy61.60.kg/test/read.cgi/v2cj/1304861674/585
//のようなものです。wikiに追加するとしたら
////【登録場所】 レス表示
////【ラベル】 テスト
////【内容】 テスト
////【コマンド】 ${SCRIPT:Fx} temp.js
////【スクリプト】
//var vcx = v2c.context;
//vcx.setClipboardText(vcx.selText);
//v2c.exec('(引数付きのパス)');
//こんな感じですかね。。。
**v2cparms.txtでの変更によるバグに関して [#we6dee30]
Rhino1.7R3のバイトコードコンパイラにはバグがあって無限ル...
v2cparms.txtでauxargs=-Drhino.opt.level=<-1以外>とか絶...
**V2Cの返す値はJavaのオブジェクト [#b6cf74cc]
V2Cが返す値はJavaのオブジェクトであるためスクリプトから扱...
とくに文字列は注意が必要でswitch文では比較に==ではなく===...
switch(th.board.key){
case "software":// コレではマッチしない
}
//java to javascript as type string
var jsKey = String(th.board.key);
switch(jsKey){
case "software":// javascriptの文字列ならマッチする
}
配列もjavaの配列なのでいつものおまじないが必要。
var refResIndex = Array.prototype.slice.call(res.refResI...
**OpenJDK RhinoとMozilla Rhinoの違い [#nedd619e]
OpenJDKとmozillaの実装の差異については[[ここ>http://jdk7....
ただし、バージョンに関してOpenJDK版は1.7R3がリリースされ...
どのリビジョンかは不明ですがOpenJDKが利用しているソース以...
そのためデフォルトの言語バージョンは1.8ですがRhinoのjavas...
1.7R3がリリースされて1年以上経つのでバグも沢山ありますが...
***constのバグ [#y06b50b0]
>どのリビジョンかは不明ですがOpenJDKが利用しているソース...
これに関連してconst定義するとバインディングは行なわれ再定...
**LiveConnect [#h5976576]
rhinoにはjavaと通信するためのLiveConnectという仕様があり...
Packagesという変数にjavaのパッケージが含まれているので"Pa...
よく使われるパッケージはトップレベルにすでに定義済みです...
importPackageやimportClassはトップレベルを汚染しメモリリ...
また、java beansプロパティに準拠したメソッドはプレフィッ...
//自分でインポート
var swingNameSpace = JavaImporter(Packages.javax.swing);
//よく使われるパッケージは定義済み
var f = new javax.swing.JFrame("test");
//自分でインポートしたパッケージを参照
var btn = new swingNameSpace.JButton(test);
//beans property access
f.visible
f.visible = true;
***メソッドオーバーロードの明示的解決 [#d1fea368]
LiveConnectではメソッド呼び出し時に期待される型が異なると...
メソッドのオーバーロードが存在する場合がそれにあたります...
オーバーロードの明示的解決にはブランケット記法を用いてobj...
var f = new javax.swing.JFrame("test");
//シグネチャは完全に一致する必要がある
f["setVisible(boolean)"](true)
----
LiveConnectの詳細な仕様は[[ここ>https://developer.mozilla...
----
**チューニングについて [#jd55acf9]
javaの現行バージョンが7となったのでjava7前提の話。
また、同じスクリプトが何度も実行されるときキャッシュされ...
OpenJDKのRhinoは1.7R4で入った最適化が入る前のバージョンな...
そのうち特にV2Cに関わる部分は文字列操作やLiveConnect、つ...
***文字列結合 [#pab2bd72]
文字列を結合するときはjava.lang.StringBuilderを使うか配列...
var buff1 = new java.lang.StringBuilder();
//foo
var buff2=[];
//bar
buff1.toString();
buff2.join("");
ただし数千ループくらいなら結合演算子だろうがStringBuilder...
終了行:
*目次 [#t13ed884]
#contents
*スクリプトとは [#m4da1bc8]
参照: [[V2C 使用法 外部コマンド:スクリプト>http://v2c.s5...
V2Cには''スクリプト''と、''System系スクリプト''があり、次...
どちらも[[スクリプト一覧]]からファイルを入手し、設定する...
**スクリプト [#m9b58a3b]
-[[外部コマンド]]に登録することよってV2Cの機能を拡張して&...
-V2Cユーザーが個別に自由な名前を付けて配布・利用すること...
**System系スクリプト [#le7a307a]
-V2Cの[[設定ファイル]]です。V2C本体の動作(更新、書き込み...
-名前が決まっているため、一ファイル内に複数の機能がまとめ...
-System系スクリプトの一覧は[[設定ファイル]]の&color(#ff00...
*スクリプトの実行に関する注意点 [#g3441419]
スクリプトは様々な理由から&color(red){エラーの発生や不具...
自分で修正できない人は、&color(red){どのスクリプトでエラ...
(エラーメッセージはメニューの「表示」→「最後のエラーメッ...
誰かが修正してくれるかもしれません。
また、自分で修正できる方はスクリプトスレで修正版を公開し...
*スクリプトの設定方法 [#kee102f6]
参照: [[V2C 使用法 外部コマンド設定>http://v2c.s50.xrea.c...
ここでは[[スクリプト/tree.js]]を例に解説します。
+''スクリプトをインストールするフォルダを作成する。''&br;...
+''スクリプトファイルを入手し、"script"フォルダに入れる。...
++スクリプトの主な入手先
+++[[スクリプト一覧]]からダウンロードする。&br;tree.jsを...
+++[[スクリプトスレ@V2C掲示板>過去スレリスト/V2C掲示板#d...
++その他の入手先
+++[[V2C関連スレ用アップローダー>http://loda.jp/v2cthread...
+++[[頂き物スクリプト>http://v2c.s50.xrea.com/contrib/scr...
+''スクリプト一覧の[[詳細>スクリプト/tree.js]]か、スクリ...
++''【登録場所】''&br;''全体 レス表示''&br;V2Cの「メニュ...
+++''【ラベル】''&br;''&color(blue){被参照レスでツリー表...
+++''【コマンド】''&br;''&color(blue){$SCRIPT tree.js};''...
+++''ID''&br;&color(blue){''10''}; と記入する。(記入は任...
+''追加ボタンを押し、一覧に追加されたことを確認し、OKを押...
#ref(./外部コマンドの設定.jpg,記入した状態)
参考:ぶるるる [[V2CでJaneにもあったレスツリーを表示>http...
**使い方 [#x89958da]
【登録場所】に従って登録した場所から、スクリプトを実行す...
***例)レス表示に登録したtree.jsを使用する [#md41a693]
レスが表示されてる上(レス番の上ではないので注意!)で右...
**備考 [#j7c2816d]
***マウスジェスチャに登録 [#r8794571]
いちいち右クリック→選択という操作が面倒だという場合は、マ...
***ツールバーボタン・お気に入りに登録 [#z225e9fa]
[[ツールバーボタン]]のボタン登録領域を右クリック、もしく...
これらからのみ使用可能な専用スクリプト(スレッド一覧表示可...
***マウスオーバーで実行 [#a25ec820]
T20100813からURLExec2.dat経由で使用できるようになりました。
以下はマウスオーバーを活用したスクリプトです。
-[[スクリプト/PopupStatusNicovideo.js]]
…ニコニコ動画の動画情報をマウスオーバーでポップアップ
-[[スクリプト/PopupStatusYoutube.js]]
…Youtubeの動画情報をマウスオーバーでポップアップ
-[[スクリプト/popupTweet.js]]
…Twitterのつぶやきをマウスオーバーでポップアップ
***ポップアップのレイアウトを変更 [#rb5a79d5]
このtree.jsは、動的にHTMLを作ってそれをV2Cがポップアップ...
例えば、tree.jsの下のほうにあるCSSの設定の下記の行で、''x...
body{margin:5px 0 5px 5px; font-size: x-small;}
***ポップアップからマウスを外した時にポップアップを閉じる...
通常、スクリプトでのポップアップはクリックしないと閉じま...
ただし、スクリプト内に専用の設定を記述する必要があります...
自分で設定し直す場合は以下のようにすれば有効にできます。
// 適用したいスクリプトをテキストエディタ(文字コードはUT...
v2c.context.setDefaultCloseOnMouseExit(true);// を先頭行...
通常は上記で問題ないですが、各ポップアップ毎に設定を変え...
// 適用したいスクリプトをテキストエディタ(文字コードはUT...
setPopupText(***)// か
setPopupHTML(***)// という行を探して(***は何かしらの文...
v2c.context.setCloseOnMouseExit(true); //という行を追加...
***ポップアップの文字列を選択出来るようにする [#r4a3086e]
// 適用したいスクリプトをテキストエディタ(文字コードはUT...
setPopupText(***)// か
setPopupHTML(***)// という行を探して(***は何かしらの文...
v2c.context.setPopupFocusable(true);// という行を追加し...
選択文字列に対する右クリックメニューはコピーと外部コマン...
また、コピペでは一部改行されない等の制限があります。
さらに、一部の外部コマンドはエラーが出て使用できない可能...
***その他 [#td3e9e20]
-スクリプトファイル名を<>で囲むとV2Cの内部スクリプトを指...
-ファイルの拡張子は".js"である必要はありません。
*System系スクリプトの設定方法 [#e842025d]
ここではスクリプトのひとつ、[[スクリプト/rescheck.js]]を...
+''スクリプトをインストールするフォルダを作成する。''&br;...
+''スクリプトファイルを入手し、"system"フォルダに入れる。...
+''スクリプトファイルの中身を確認・編集する。''&br;以下の...
+''スクリプトのパーミッション設定''&br;今回の例ではこの操...
+''スクリプトの読み込み''&br;「メインメニュー」→「ファイ...
**使い方 [#x2caa67d]
起動に成功すれば、所定の動作で条件が合えば機能が自動実行...
***例)rescheck.jsの機能を使用する。 [#s3122c62]
更新して新着レスを取得するなどすれば、設定例だと、URLの行...
----
*スクリプトFAQ [#ka5225ec]
**スクリプト実行時に「Cannot run program~」というエラー...
パス区切り記号としての¥(バックスラッシュ)が1つしかない...
WindowsのFirefoxで2chのHPを表示させる例:
v2c.exec('"C:\\Program Files\\Mozilla Firefox\\firefox.e...
と言ったように、¥は2つ記述する必要があります。
**スクリプト実行時に「access denied」や「~Permission」と...
パーミッションの設定が間違っている可能性が高いです。
下記の外部コマンド登録例でいうとFの部分です。
${SCRIPT:F} hoge.js
各スクリプトで指定する文字は異なります。
基本的にスクリプトファイル(~.js)の中に設定法が書いてあ...
マウスオーバーでスクリプトを起動するようにしている場合は...
post.js等のフォルダに保存するだけで適用されるシステム系ス...
**スクリプト実行時に「Cannot find function~」というエラ...
V2Cの最新機能の可能性があります。V2Cを更新してください。
テスト版の場合は更新チェックの対象にならないため本スレ,...
**Javaを更新後、スクリプト実行時に「Cannot add a property...
スクリプトの修正が必要となります。
1.7.0_01(1.6.0_29)以降に採用されているRhinoが更新されたた...
このためホストオブジェクトに新たなプロパティを追加するコ...
**.jsファイルの数が多く、フォルダ内がごった返しているので...
'/'または'\'を区切り文字として
サブフォルダ内のスクリプトファイルを指定することができま...
//scriptフォルダ内にtestという名前のフォルダを作りそこに...
$SCRIPT test/example.js
-"system"と"lib"は予約フォルダ名ということにしておいてく...
-v2c.getScriptSubFile(n) による他のスクリプトファイル名と...
//*(作成・編集者向け)スクリプトFAQ
*スクリプト開発者向け情報 [#tfdec5d0]
|書きかけの項目です。加筆、訂正募集中。|
//参考:ぶるるる [[V2Cスクリプト作成メモ>http://sarasate....
//>本当はwikiに書きたいところだけど、こっちの方が気楽に書...
//ソース例:
//#highlight(linenumber,javascript){{
//function test() {
// var hoge = "テスト";
// v2c.println(hoge);
//};
//test();
//}}
//
//汎用性のあるスクリプトテンプレートってのはどうですかね。
//例えば、クリップボードの内容を特定のソフトに引数を付け...
//http://yy61.60.kg/test/read.cgi/v2cj/1304861674/585
//のようなものです。wikiに追加するとしたら
////【登録場所】 レス表示
////【ラベル】 テスト
////【内容】 テスト
////【コマンド】 ${SCRIPT:Fx} temp.js
////【スクリプト】
//var vcx = v2c.context;
//vcx.setClipboardText(vcx.selText);
//v2c.exec('(引数付きのパス)');
//こんな感じですかね。。。
**v2cparms.txtでの変更によるバグに関して [#we6dee30]
Rhino1.7R3のバイトコードコンパイラにはバグがあって無限ル...
v2cparms.txtでauxargs=-Drhino.opt.level=<-1以外>とか絶...
**V2Cの返す値はJavaのオブジェクト [#b6cf74cc]
V2Cが返す値はJavaのオブジェクトであるためスクリプトから扱...
とくに文字列は注意が必要でswitch文では比較に==ではなく===...
switch(th.board.key){
case "software":// コレではマッチしない
}
//java to javascript as type string
var jsKey = String(th.board.key);
switch(jsKey){
case "software":// javascriptの文字列ならマッチする
}
配列もjavaの配列なのでいつものおまじないが必要。
var refResIndex = Array.prototype.slice.call(res.refResI...
**OpenJDK RhinoとMozilla Rhinoの違い [#nedd619e]
OpenJDKとmozillaの実装の差異については[[ここ>http://jdk7....
ただし、バージョンに関してOpenJDK版は1.7R3がリリースされ...
どのリビジョンかは不明ですがOpenJDKが利用しているソース以...
そのためデフォルトの言語バージョンは1.8ですがRhinoのjavas...
1.7R3がリリースされて1年以上経つのでバグも沢山ありますが...
***constのバグ [#y06b50b0]
>どのリビジョンかは不明ですがOpenJDKが利用しているソース...
これに関連してconst定義するとバインディングは行なわれ再定...
**LiveConnect [#h5976576]
rhinoにはjavaと通信するためのLiveConnectという仕様があり...
Packagesという変数にjavaのパッケージが含まれているので"Pa...
よく使われるパッケージはトップレベルにすでに定義済みです...
importPackageやimportClassはトップレベルを汚染しメモリリ...
また、java beansプロパティに準拠したメソッドはプレフィッ...
//自分でインポート
var swingNameSpace = JavaImporter(Packages.javax.swing);
//よく使われるパッケージは定義済み
var f = new javax.swing.JFrame("test");
//自分でインポートしたパッケージを参照
var btn = new swingNameSpace.JButton(test);
//beans property access
f.visible
f.visible = true;
***メソッドオーバーロードの明示的解決 [#d1fea368]
LiveConnectではメソッド呼び出し時に期待される型が異なると...
メソッドのオーバーロードが存在する場合がそれにあたります...
オーバーロードの明示的解決にはブランケット記法を用いてobj...
var f = new javax.swing.JFrame("test");
//シグネチャは完全に一致する必要がある
f["setVisible(boolean)"](true)
----
LiveConnectの詳細な仕様は[[ここ>https://developer.mozilla...
----
**チューニングについて [#jd55acf9]
javaの現行バージョンが7となったのでjava7前提の話。
また、同じスクリプトが何度も実行されるときキャッシュされ...
OpenJDKのRhinoは1.7R4で入った最適化が入る前のバージョンな...
そのうち特にV2Cに関わる部分は文字列操作やLiveConnect、つ...
***文字列結合 [#pab2bd72]
文字列を結合するときはjava.lang.StringBuilderを使うか配列...
var buff1 = new java.lang.StringBuilder();
//foo
var buff2=[];
//bar
buff1.toString();
buff2.join("");
ただし数千ループくらいなら結合演算子だろうがStringBuilder...
ページ名: