█ 大いなる過去の遺産
userContent.js †
Greasemonkey互換(一部を除く)。
- userContent.jsは, GM用スクリプトのほとんどが動作すると思う, ツールメニューによりスクリプトのOn/Offの制御が可能。
- GMの一部のスクリプト(ドキュメント内スクリプトを参照するような)は動作しないようになっています。(セキュリティ面から,それぞれのスクリプトは,スクリプト毎に用意されたXPCNativeWrapperでラップされた名前空間で実行するようになっているため)
userMenu.js †
Javascript Actions拡張版。
※userChromeJS上で利用する際は、プロファイル内のchromeフォルダ直下にuserChrome.js(Alice0775版サブスクリプトローダー)を置いて下さい。この環境でないとうまく動作しない場合があります。*1
- userMenu.js一式同梱スクリプト
- Use Javascript.auto.js
- 特徴: user.jsでサイト側の内外部JavaScriptの実行を無効の状態にする。Use Javascript.auto.jsでコンテキストメニューからホスト単位でJavaScriptを有効または再度無効の状態にする。
- 下準備: プロファイルフォルダ直下にuser.jsを作成*2する。「user_pref("capability.policy.default.javascript.enabled", "noAccess");」と記述して保存する。(userMenu.js.readme.txt参照)
補足
- userMenu.js, サブメニューのネスト, タブメニューやメインメニューなど, より拡張されている。
- Ver0.9以降新機能にタブ毎にセキュリティ・ポリシーを設定できるタブコンテキストメニューが追加された。
- JSAに比べセキュリティが強化されているため一部のスクリプトは修正が必要。
Tips
- Tips(userContent.js ver. 1.0,userMenu.js ver. 0.9)
セキュリテイからGM用スクリプトが動作できない場合, 以下の修正を行うことで動作するようになります。(ver1.0)
元のGM用スクリプトに以下に示す最初3行と最後1行を追加する。
var namespace = new unsafeWindow.Function();
namespace.prototype = this;
eval((function(){ (function(){
......元のGM用スクリプト本体
})(); }).toSource() + '();',new namespace());
- Tips(userContent.js ver. 1.11,userMenu.js ver. 1.0)
1. jsaのようにComponentsを使えるようにするには
var global = new chromeWindow.Object();
global.window = unsafeWindow;
global.document = unsafeDocument;
global._jsaCScript = _jsaCScript;
eval('(' + function(){
最後に↓を追加.
}.toSource() + ')();',global);
または
var namespace = new unsafeWindow.Function();
namespace.prototype = this;
eval((function(){ (function(){
......元のJSA用スクリプト本体
})(); }).toSource() + '();',new namespace());
2. JsActions.scriptFolderPathは,_jsaCScript.currentScriptPath.replace(/[^/\\]+$/,'')で代用
3. windowオブジェクトをなるべく保持するようになった
1.11ではwindowオブジェクトをなるべく保持するようになっているので,AutoPagerizeの場合, 同スクリプト内の
if (typeof(window.AutoPagerize) == 'undefined') {
window.AutoPagerize = {}
window.AutoPagerize.addFilter = function(f) {
AutoPager.filters.push(f)
}
window.AutoPagerize.addDocumentFilter = function(f) {
AutoPager.documentFilters.push(f)
}
}
を
//if (typeof(window.AutoPagerize) == 'undefined') {
window.AutoPagerize = {}
window.AutoPagerize.addFilter = function(f) {
AutoPager.filters.push(f)
}
window.AutoPagerize.addDocumentFilter = function(f) {
AutoPager.documentFilters.push(f)
}
//}
としないと, filterが機能しないようです。これは,元のAutoPagerizeのバグと思われる。
4. windowオブジェクト下のonloadを初めとする「on〜」と言う一連のイベント用のコールバックは使えないので,unsafeWindowを使う必要があります.これはGMでも同様.
window.addEventListenerは動作しますが,ver. 1.1でスクリプトの起動タイミングが遅くなったため,loadイベントの後にスクリプトが起動され,イベントを捕らえられない事があります.
5. Exception... "'Permission denied to get property Function.__parent__' when calling method:.....
非特権コードから特権コードを呼び出そうとして失敗したんじゃないかと.
メタデータに「@privilege false」(ver1.2ではバグのためtrueとする)を追加するか,userContent.pl.jsの「USE_GM」を「2」にすれば動くと思います.
6. ReferenceError : 定義されていない
極一部を除くchromeWindow下のプロパティやメソッドを,chromeWindowを省略して呼び出せなくなりました.
7. GM_Modoki.jsl:GM_xmlhttpRequestのイベントハンドラでの例外が発生する場合, 同メソッドの該当箇所を下記のようにする。
setTimeout(function(){
if(typeof obj.data == 'string') req.send(obj.data);
else req.send(null);
}, 500);
※ver1.2では上記対策済み。
8. malformed URI sequenceエラー
UTF-8 でないファイルをUTF-8として扱おうとして出るエラーです.
- pl.jsファイル中のUSE_UTF8とUSE_GM
- USE_UTF8が「2」→全てのファイルをUTF-8で保存するか「1」に変更する.
- USE_UTF8が「1」→該当ファイルに適当な日本語の注釈文入れて自動判別が成功する.
- USE_GMが「2」→*.user.jsを全てUTF-8で保存する.
adblock#.uc.js †
Adblock軽量版。
当初公開していたアップローダー『LODA.JP』が閉鎖したため現在はこちらで公開している。
LODA.JPのファイルについて †
LODA.JPは閉鎖されました。
同サイトにあったファイルのうち、
パスワードが掛けられているもの以外と
メンテナンス時に消えてしまったもの以外は、
旧アップローダーのこちら(単一ファイル)からダウンロードできます
(ファイル名やコメントなどはこちら)。
また、uploader.jp時代のファイルも含めたものは、
こちら(単一ファイル)にあります。