Arrayオブジェクトのfindをfilterで代用する 2018-09-23 (Sun) 00:21

IE9以降だいぶマシになったもののIEのJScriptはやっぱり貧弱。
Arrayオブジェクトにfindが実装されていないのだ。
以前Arrayオブジェクトをprototypeで拡張しようと試みたけど、問題があって断念した。

そこで、ちょっとしたオブジェクトの配列などの検索に filterを findの代用にしてみる。
findは条件を満たす要素が見つかったらループを抜けるのに対し、filterは全要素を条件判定しながら新たに配列を作るので 効率やパフォーマンス的に同等ではない。
しかし、その辺を承知の上で使う分には、簡潔に記述できるメリットがある。
//
// sample
//
	var tbl = [{flg: false, num: 0}, {flg: true, num: 1}, {flg: true, num: 2}, {flg: false, num: 3}];
	// オブジェクトの配列を先頭からチェックし最初に見つかった flgがtrueの numを表示
	alert(tbl.filter(function(c){ return c.flg }).shift().num);

	// ちなみにshift()をpop()にすると配列を逆から調べて最初に見つかった要素を取得出来る。
	alert(tbl.filter(function(c){ return c.flg }).pop().num);
関連記事

PaleMoon28に移行すべく、気の向くままに調査中 2018-09-11 (Tue) 00:03

Twitterのタイムラインを埋め込んだページやなんかで、こんなエラーがめっちゃ出てブラウザコンソールが見づらい。
Handler function DebuggerProgressListener.prototype.onStateChange threw an exception:
[Exception... "Component returned failure code: 0x80004002 (NS_NOINTERFACE) [nsIWebProgress.DOMWindow]" nsresult: "0x80004002 (NS_NOINTERFACE)" .....
これは27系でも出てたのを放っておいただけで、たまさか調べてみたらこれがヒット。
RESOLVED FIXED in Firefox 63ですと。orz
PaleMoonで修正されるのはいつのことになるやら分らないので、仕方なく自力で /browser/omni.jaの中身を弄る。
元ファイルはきっちりバックアップ取っておいて、おかしくなったら戻せばいいやくらいのノリである。

FirefoxとPaleMoonとはベースのバージョンが違うこともあり、ファイルの構成もちょっと違ってるみたいで
chrome/devtools/modules/devtools/server/actors/webbrowser.js
chrome/devtools/modules/devtools/shared/webconsole/network-monitor.js
この2つをここのコードのように修正しといた。

userchromeJSのスクリプトでも、TabsProgressListenerの onStateChangeでaWebProgress.DOMWindowを参照すると
当該エラーが出る物があったので、参照前にaWebProgress.isBeingDestroyed()をチェックするようにした。
関連記事

PaleMoon28.0.1 2018-09-01 (Sat) 00:31

PaleMoonを28.0.1に更新してみたら結構動かないアドオンやスクリプトが…
ザックリ使ってみたところuserChromeJSのスクリプトのいくつか、FireGesturesとClean Linksもなんかおかしい。orz
諸々PaleMoon向けにその場しのぎでメンテして使ってるので、もう一々直すのメンドクセェ。(´・ω・`)y-~~~
今まではバージョン上げても割とそのままいけてたのに、これからバージョン上がる度に結構変わるのかなぁ。(´・_・`)

しばらくは27の最終版を使っとこう。
関連記事

入力フィールドに履歴機能を追加 2018-08-23 (Thu) 23:35

「フィルター バー」、「検索 バー」、「Everything」の各アドオンの入力フィールドに履歴機能を追加するusloderスクリプト。
但し、すべての歴ではなく選択したものだけを残す仕様となっている。

操作
歴選択: ホイール or カーソル上下
検索実行: ホイールクリック or ENTERキー
歴に登録: [SHIFT]+ホイールクリック or [SHIFT]+ENTERキー(同時に検索も行われる)
歴から削除: [CTRL]+ホイールクリック or [SHIFT]+DELキー

試してないけど、オブジェクトを指定して関数を呼ぶだけなので他の入力フィールドでも同じインタフェースで機能追加できると思う。
※「フィルターリスト」アドオンと競合する可能性があるので、公開バージョンでは「フィルター バー」の履歴機能追加はコメントアウトしてある。

AddHistoryFunction.js
@TE64 18.8.2 Win 6.1.7601 WS 300 Admin IE 11 ja_jp
関連記事

ファイル名タグ 2018-07-26 (Thu) 22:26

タグ定義ファイルに定義したタグ(短いキーワード)をファイルのベース名の末尾に手軽に付加(or 取り外し)し、
それを元にしたファイル検索(Everythingアドオンを併用)機能をアドオンにした。
前エントリで画策してたもの。以下概要。
kiji270-01.jpg
タグ定義ファイル
・UTF8のプレーンテキストファイル(標準ファイル名: _filenametag)で、テキストエディタ等で別途用意する必要がある
・1行に1タグ(or 1グループ)を記述
・";"は行コメントとして扱われる
・カレントフォルダを基点として上位フォルダに向かって検索し、最初に見つかったファイル
;タグ定義ファイル例
beatles:john:paul:george:ringo	;グループ
john
paul
george
ringo
タグのフォーマット
・タグ開始文字;タグ1[;タグ2...];タグ終了文字
・タグ開始文字(標準: _[$)、タグ終了文字(標準: $])はタグ付けして管理するファイルには使用しない文字で構成すること
_[$;john;paul;george;$]
グループ
・フォーマットは タグ:タグ1[:タグ2...]
・検索する際にグループ定義になっているタグすべてをOR検索する
・beatles:john:paul:george:ringo のように定義した場合、検索時に beatlesをチェックしておけば johnや paulにもヒットする
注意・制限事項
・ファイルの最大フルパス長(260文字程度)を超えるタグ付けはできない
・ファイル名として使用出来ない文字をタグに含めることはできない
・検索はカレントフォルダ以下が対象となる
・検索条件の最大指定数は Everythingの許容量に依存する
・当アドオンで検索を行うと、Everythingアドオンの「Regular Expression/Migemo」設定が内部的に未チェック状態になる (当アドオンのウィンドを閉じたときに設定値に戻る)
@TE64 18.7.4 Win 6.1.7601 WS 300 Admin IE 11 ja_jp

外部ウィンドウはサイズも自由に変更できるし、位置とサイズも覚えていて便利なので、 X-Finderのガジェットみたいに動的にいろんな機能を切替えて使えるようにしたら面白そう。
関連記事
注意事項
基本的にこのブログはブログ主の備忘録です。

ブログの内容にはブログ主の主観や時には正確でない情報が含まれていることもあります。書いてある内容がすべての環境にあてはまることを保証するものでもありません。

また、過去の記事は現時点で既に陳腐化していることもあります。

その辺をご理解の上で当ブログ内に書いてあることを試す場合は自己責任でお願いします。

記事内容の誤りの指摘、疑問点の回答などコメント頂けると助かります。
カレンダー
08 | 2018/09 | 10
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
ブログ内検索
カラーコードチェッカ
カラーコードの確認
入力例) #ffffff | blue
カテゴリ
最新記事
最新コメント
最新トラックバック
リンク
ブロとも申請フォーム

この人とブロともになる

メールフォーム
メールフォーム設置当初より受信できない状態になっていました。2017/11/03以前にメール送信された方、誠に申し訳ありませんでした。
必要であれば再送お願いします。

名前:
メール:
件名:
本文: