GreaseMonkey 互換機能 (開発者用)
目次
1.概要
イベント起動にファイル名が user.js で終わるスクリプト(test.user.js等)を指定すると、Firefox の GreaseMonkey 互換機能が動作します。
(重要)現バージョンの ScriptBrowserK ではメタデータ部分(user.js ファイルの先頭部分)の include, exclude 等は使用されません。実行する Web ページの URL は [ScriptBrowserKオプション]-[イベント起動]ページで指定してください。
GreaseMonkey 互換機能は、大きく下の5つの機能で構成されます。
- window オブジェクトをグローバル(省略可能)なオブジェクトとして登録。
- HTMLの各要素のイベントを処理できるように、スクリプトの寿命をWebページが表示されている間に拡張。
※通常のスクリプトでは、スクリプトの実行が終了するとスクリプトは即時解放され、HTMLの各要素のイベントにメソッドを割り当てても動作しません) - window や Array 等のオブジェクトのメソッドで、FireFox には実装されているが Internet Explorer には実装されていないメソッドを拡張。
(参照)拡張されるメソッドの一覧 - 実行する前に、user.js スクリプト内の Firefox と同等のメソッドを Internet Explorer のメソッドに置換。
(参照)firefox との互換性を高めるために自動的に置換される内容 - ScriptBrowserK オブジェクトの Firefox 互換用メソッド。
(参照)ScriptBrowserK オブジェクトの Firefox 互換用メソッド一覧
2.拡張されるメソッドの一覧
GreaseMonkey 互換機能では、window や Array等のオブジェクトのメソッドで、FiereFox には実装されているが Internet Explorer には実装されていないメソッドを拡張します。
ScriptBrowserK では user.js スクリプトを実行する前に、user.js スクリプトと同じ名前空間で該当するメソッドを宣言することでこの機能を実現しています。
以下に拡張されるメソッドの一覧を紹介します。
拡張される機能 | エミュレートに使用される振り替えメソッド |
---|---|
document.createElementNS(nameSpace, tag) | document.createElement(tag) ※nameSpace 引数は無視されます。 |
window.getComputedStyle(elm, name) | elm.currentStyle() ※name 引数は無視されます。 |
document.evaluate(xpath, node, nsResolver, resultType, result_) | ScriptBrowserK オブジェクトの DocumentEvaluate メソッド |
document.importNode | createTextNode() と innerHTML プロパティを使用して同等の機能を実装。 |
Array.map, forEach | JavaScript で同等の機能を実装。 |
Object.toSource | JavaScript で同等の機能を実装。 |
3.firefox との互換性を高めるために実行前に置換される内容
GreaseMonkey 互換機能では、firefox との互換性を高めるために、user.js スクリプト内の以下の文字列(メソッド名等)を置換してからスクリプトが実行されます。
置換されるテキスト | 置換後のテキスト |
---|---|
addEventListener | attachEvent ※自動的にイベント名に on が追加される |
removeEventListener | dettachEvent |
getPropertyValue | getAttribute |
defaultView | parentWindow |
オブジェクト定義部末尾の ", }"の "," 部分 | 削除(Internet Explorerではエラーになるため) |
window.innerHeight | (document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight) |
window.innerWidth | (document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth) |
window.scrollY | Math.max(document.documentElement.scrollTop, document.body.scrollTop) |
window.scrollX | Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) |
4.ScriptBrowserK オブジェクトの Firefox 互換用メソッド一覧
Firefox 互換用メソッドには、下記のようなものがあります。
詳細は、ScriptBrowserK オブジェクトやSBKScriptItem オブジェクトの解説を参照して下さい。
- ScriptBrowserK.DocumentEvaluate
- ScriptBrowserK.GM_log
- ScriptBrowserK.GM_xmlhttpRequest
- ScriptBrowserK.GM_openInTab
- SBKScriptItem.GM_GetValue/GM_SetValue
- SBKScriptItem.CreateHTMLDocumentByString (AutoPagerize用に実装)
- SBKScriptItem.GM_registerMenuCommand
5.注意事項
PDF ファイルや Microsoft Excel 等のファイルをブラウザ内に表示した場合(HTML document オブジェクトが存在しない場合)、スクリプトエラーの発生を防止するために user.js スクリプトは実行されません。
PDF ファイルや Microsoft Excel 等のファイルを表示した場合にもスクリプトをイベント起動させたい場合には、ファイル名末尾に user.js を付けないで下さい。(test.js などとする)