From 954539636920a3105ec410701619337a5b06aef7 Mon Sep 17 00:00:00 2001 From: anekos Date: Sat, 15 Aug 2009 02:03:06 +0000 Subject: 微妙にやり方を変えてみる git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@34875 d0d07461-0603-4401-acd4-de1884942a52 --- auto-focus-frame.js | 73 +++++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 33 deletions(-) (limited to 'auto-focus-frame.js') diff --git a/auto-focus-frame.js b/auto-focus-frame.js index 0a71f7c..3ea65ee 100644 --- a/auto-focus-frame.js +++ b/auto-focus-frame.js @@ -38,7 +38,7 @@ let PLUGIN_INFO = Auto focus frame Automatically focus to largest frame. 最も大きなフレームに自動的にフォーカスする。 - 1.0.6 + 1.0.7 anekos new BSD License (Please read the source code comments of this plugin) 修正BSDライセンス (ソースコードのコメントを参照してください) @@ -52,61 +52,68 @@ let PLUGIN_INFO = ; // }}} (function () { - autocommands.add( - 'DOMLoad', - '.*', - function () { - 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) + 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 (maxFrame) + maxFrame.focus(); + } - - if (!(window.content.document instanceof HTMLDocument)) - return; - if (content.frames.length <= 1) + if (!(window.content.document instanceof HTMLDocument)) return; - let nframes = content.frames.length; - for (let frame in util.Array.itervalues(content.frames)) { - if (frame.frameElement instanceof HTMLFrameElement) { + if (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); - if (!--nframes) - doFocus(); + callDoFocus(); }, true ); } } - } - ); + } + + autocommands.add('DOMLoad', '.*', onLoad); })(); -- cgit v1.2.3