aboutsummaryrefslogtreecommitdiffstats
path: root/auto-focus-frame.js
diff options
context:
space:
mode:
authoranekos2009-08-15 03:04:41 +0000
committeranekos2009-08-15 03:04:41 +0000
commitbe5ba884146a0d8d6e4679f5d1245c7ea6754554 (patch)
tree4e9fd2da949682dc28ba05a39323cfa51989fd7e /auto-focus-frame.js
parent954539636920a3105ec410701619337a5b06aef7 (diff)
downloadvimperator-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.js73
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);
+
})();