diff options
author | anekos | 2009-08-15 03:04:41 +0000 |
---|---|---|
committer | anekos | 2009-08-15 03:04:41 +0000 |
commit | be5ba884146a0d8d6e4679f5d1245c7ea6754554 (patch) | |
tree | 4e9fd2da949682dc28ba05a39323cfa51989fd7e /auto-focus-frame.js | |
parent | 954539636920a3105ec410701619337a5b06aef7 (diff) | |
download | vimperator-plugins-be5ba884146a0d8d6e4679f5d1245c7ea6754554.tar.bz2 |
autocmd を使わないようにしてみた
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@34876 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'auto-focus-frame.js')
-rw-r--r-- | auto-focus-frame.js | 73 |
1 files changed, 23 insertions, 50 deletions
diff --git a/auto-focus-frame.js b/auto-focus-frame.js index 3ea65ee..aa747a9 100644 --- a/auto-focus-frame.js +++ b/auto-focus-frame.js @@ -38,7 +38,7 @@ let PLUGIN_INFO = <name>Auto focus frame</name> <description>Automatically focus to largest frame.</description> <description lang="ja">最も大きなフレームに自動的にフォーカスする。</description> - <version>1.0.7</version> + <version>1.0.8</version> <author mail="anekos@snca.net" homepage="http://d.hatena.ne.jp/nokturnalmortum/">anekos</author> <license>new BSD License (Please read the source code comments of this plugin)</license> <license lang="ja">修正BSDライセンス (ソースコードのコメントを参照してください)</license> @@ -60,60 +60,33 @@ let PLUGIN_INFO = (function () { function onLoad () { - function doFocus () { - let [maxSize, maxFrame] = [-1, null]; - for (let frame in util.Array.itervalues(content.frames)) { - try { - if (!(frame.frameElement instanceof HTMLFrameElement)) - continue; - if (frame.scrollMaxX <= 0 && frame.scrollMaxY <= 0) - continue; - let size = frame.innerWidth * frame.innerHeight; - if (maxSize < size) { - maxSize = size; - maxFrame = frame; - } - } catch (e) { - liberator.log(e) - continue; - } - } - if (maxFrame) - maxFrame.focus(); - } - - if (!(window.content.document instanceof HTMLDocument)) - return; + liberator.log('auto-focus-frame.js - onLoad'); - if (content.frames.length <= 1) + if (!(window.content.document instanceof HTMLDocument) || (content.frames.length <= 1)) return; - let nframes = content.frames.length; - - function callDoFocus () { - if (!--nframes) - doFocus(); - } - - for (let frame in util.Array.itervalues(content.frames)) { - if (frame.frameElement instanceof HTMLFrameElement) { - if (frame.body) { - callDoFocus(); - } else { - frame.addEventListener( - 'DOMContentLoaded', - function () { - frame.removeEventListener('DOMContentLoaded', arguments.callee, true); - callDoFocus(); - }, - true - ); - } - } - } + liberator.log('auto-focus-frame.js - onLoad'); + + let targetFrames = [ + frame + for (frame in util.Array.itervalues(content.frames)) + if (frame.frameElement instanceof HTMLFrameElement) + ]; + + let [maxSize, maxFrame] = [-1, null]; + targetFrames.forEach(function(frame) { + if (frame.scrollMaxX <= 0 && frame.scrollMaxY <= 0) + return; + let size = frame.innerWidth * frame.innerHeight; + if (maxSize < size) + [maxSize, maxFrame] = [size, frame]; + }); + if (maxFrame) + maxFrame.focus(); } - autocommands.add('DOMLoad', '.*', onLoad); + tabs.getBrowser().addEventListener("DOMContentLoaded", onLoad, true); + })(); |