続 テーブルのソート
Sleipnirのタブを共有
さっき、書きかけの日記が消えたので省略モード。
たいそうなタイトルですが、たいした内容じゃないです。
複数台のWindowsマシンでLANを構築してるときに
Aのマシンで開いてるのをBのマシンでも見たいってときないです?
僕はB5ノートで見ていたWEBを家ではデスクトップマシン(17型モニタ)
で広々と見たいってなるんです。
ってことで、タブに展開しているページのURLをクリップボードに格納して
クリップボードLAN共有ソフト(NetClipなど)を使って
別マシンで展開するスクリプトを作ってみました。
クリップボードLAN共有ソフトと連携して動く訳ではありません。
クリップボードLAN共有ソフトは手動で操作してください。m(。−_−。)m
/********************************************************** 「全タブのURLをクリップボードに送る」ver1.00 2006/07/19 Written by Stewie <簡単な説明> 開いているタブのURLを改行(\n)区切りでクリップボードに送る。 「クリップボードにあるURLを新規タブで開く」スクリプトとの併用を 想定しています。 もちろん、メモに貼り付けたりもいいかも。 <version情報> ver 1.00 とりあえず完成。 **********************************************************/ var window; var pnir; var document; var id; var nid; pnir = new ActiveXObject("Sleipnir.API"); id = pnir.GetDocumentID(pnir.ActiveIndex); document = pnir.GetDocumentObject(id); window = pnir.GetWindowObject(id); var tab_len = pnir.GetCount; //誤動作防止のためにクリップボードを空にする window.clipboardData.clearData("Text"); // 選択文字列をクリップボードに取得するための前処理 window.clipboardData.setData("Text", ""); copiedtext = window.clipboardData.getData("text"); //全タブのURLを格納 for(i=0;i<tab_len;i++){ id = pnir.GetDocumentID(i); document = pnir.GetDocumentObject(id); window = pnir.GetWindowObject(id); copiedtext += document.location.href + "\n" //document.title + "\n" + } //クリップボードにセット window.clipboardData.setData("Text", copiedtext); window.alert("done"); document = null; pnir = null; window = null;
/********************************************************** 「クリップボードにあるURLを新規タブで開く」ver1.00 2006/07/19 Written by Stewie <簡単な説明> クリップボード(コピーバッファ)にあるURLを新規タブに展開する。 「全タブのURLをクリップボードに送る」スクリプトを実行した後に このスクリプトを実行することを想定しています。 <version情報> ver 1.00 とりあえず完成。 **********************************************************/ var window; var pnir; var document; var id; var nid; pnir = new ActiveXObject("Sleipnir.API"); id = pnir.GetDocumentID(pnir.ActiveIndex); document = pnir.GetDocumentObject(id); window = pnir.GetWindowObject(id); var copiedtext; //クリップボードのデータをcopiedtext変数に格納 copiedtext = window.clipboardData.getData("text"); //改行(\n)で各URLが区切られているものを各個配列に。 var URLArray = copiedtext.split("\n"); //配列の各要素を新規タブで展開。 for(i=0; i<URLArray.length;i++ ){ pnir.NewWindow(URLArray[i], true); } window.alert("done"); document = null; pnir = null; window = null;
2006-07-16 - griffin-stewieの日記
のひとりごとにも書いてたコードの
はてなダイアリーへの記載方法が
さっきやっとわかりました。
恥ずかしい〜
window.open()を有効活用
僕はSleipnirのスクリプト機能を業務WEBアプリの商品検索のときに活用しているのですが、
SeaHorseプラグインを使うようになって問題が発生していました。
SeaHorseスクリプトは商品検索結果に対して
- 商品画像をXMLHTTPを使ってWEB上から取得、貼り付け。
- 商品履歴等 テーブルを見やすく整形
などなど
フォームに商品コードを入力してPOSTした場合には
設計通りにSeaHorseが機能するのですが、
GETメソッドで商品コードをクエリとして渡した場合に
- 商品画像が複数埋め込まれてしまう
- テーブルの非表示機能がうまく効かなくなる
などおこってしまいます。
よくみるとGETメソッドを使った場合、アドレスバーが
SeaHorseで指定したアドレス
↓
違うアドレス
↓
SeaHorseで指定したアドレス
と変化していました。
GETメソッドを使うときはAmazonとかで
商品コードを選択し、SleipnirScriptで選択部分をクエリとして加え
SleipnirAPIのNewWindowで新規ウィンドウで開いていました。
これを
JavaScriptのwindow.opne("アドレス",_blank);
に変えるとあら不思議。
アドレスの変化がなくなりました。
これで悩まされた多重起動が直ったっと思ったら
リロードしたらダメでした。
やはりSeaHorseそのものの挙動を直してもらうのが最良の手段かもしれませんorz
Sleipnir Script 備忘録
documentにイベントを追加するときには
attachEvent()
で行いますが、SleipnirのSeaHorseプラグインで
attachEvent() を
使うときには
// @type SleipnirScript
では動作しませんので。
以下 適当なサンプル
// ==UserScript==
// @name Test_attachEvent
// @namespace http://d.hatena.ne.jp/griffin-stewie/
// @description GoogleのトップページのBodyにイベントを追加するだけ。クリックするとアラートがでます。
// @include http://*.google.*/*// ==/UserScript==
(function()
{
document.body.attachEvent(
'onclick',
function() {
alert("TEST");
}, true);
})();