execution

execution

コード

  • window.parent が window を指さなければ抜ける
  • <iframe> 、<object> 、あるいは、<frame> で読み込まれた場合</li> </pp> </ul> <pp><pre></pp> <pp>if (window != window.parent) {</pp> <pp> return</pp> <pp>}</pp> <pp></pre></pp> <pp> <ul> <li> Extension.isFirefox()</li> </pp> </ul> <pp><pre></pp> <pp>if (Extension.isFirefox()) {</pp> <pp> fixResolvePath()</pp> <pp>}</pp> <pp></pre></pp> <pp> <ul> <li> window.AutoPagerize が定義されていなければ、以下を実行</li> </pp> </ul> <pp><pre></pp> <pp>if (typeof(window.AutoPagerize) == 'undefined') {</pp> <pp></pre></pp> <pp> <ul> <li> window.AutoPagerize に空のオブジェクトを定義</li> </pp> </ul> <pp><pre></pp> <pp> window.AutoPagerize = {}</pp> <pp></pre></pp> <pp> <ul> <li> addFilter</li> </pp> </ul> <pp><pre></pp> <pp> window.AutoPagerize.addFilter = function(f) {</pp> <pp> AutoPager.filters.push(f)</pp> <pp> }</pp> <pp></pre></pp> <pp> <ul> <li> window.AutoPagerize.launchAutoPagerAutoPager.launchAutoPager を指すように</li> </pp> </ul> <pp><pre></pp> <pp> window.AutoPagerize.launchAutoPager = AutoPager.launchAutoPager</pp> <pp></pre></pp> <pp> <ul> <li> GM_AutoPagerizeLoaded イベントを定義</li> </pp> </ul> <pp><pre></pp> <pp> var ev = document.createEvent('Event')</pp> <pp> ev.initEvent('GM_AutoPagerizeLoaded', true, false)</pp> <pp> document.dispatchEvent(ev)</pp> <pp>}</pp> <pp></pre></pp> <pp> <ul> <li> settings に空のオブジェクトを定義</li> </pp> </ul> <pp><pre></pp> <pp>var settings = {}</pp> <pp></pre></pp> <pp> <ul> <li> ap に null を定義</li> </pp> </ul> <pp><pre></pp> <pp>var ap = null</pp> <pp></pre></pp> <pp> <ul> <li> Extension インスタンスを生成して extension に定義</li> </pp> </ul> <pp><pre></pp> <pp>var extension = new Extension()</pp> <pp></pre></pp> <pp> <ul> <li> extension.postMessage で settings メッセージを投げる</li> </pp><pp> <li> 受けとったデータを settings へ収納</li> </pp> </ul> <pp><pre></pp> <pp>extension.postMessage('settings', {}, function(res) {</pp> <pp> settings = res</pp> <pp></pre></pp> <pp> <ul> <li> extension.postMessagesiteinfo メッセージを投げる</li> </pp><pp> <li> 受け取ったデータを callback の引数 res で渡す</li> </pp> </ul> <pp><pre></pp> <pp> extension.postMessage('siteinfo', { url: location.href }, function(res) {</pp> <pp></pre></pp> <pp> <ul> <li> settings['exclude_patterns'] が定義されていない、もしくは isExclude(settings['exclude_patterns']) が true でなければ次へ</li> </pp> </ul> <pp><pre></pp> <pp> if (!settings['exclude_patterns'] || !isExclude(settings['exclude_patterns'])) {</pp> <pp></pre></pp> <pp> <ul> <li> autopagerize.user.jsSITEINFO で定義されているサイトインフォデータを引数に AutoPager.launchAutoPager を呼び出す</li> </pp><pp> <li> background.js から res で受け取ったサイトインフォデータを引数に AutoPager.launchAutoPager を呼び出す</li> </pp><pp> <li> autopagerize.user.jsMICROFORMAT で定義されているサイトインフォデータを引数に AutoPager.launchAutoPager を呼び出す</li> </pp><pp> <ul> <li> MICROFORMAT を配列に収納して引数で渡してる</li> </pp> </ul> </ul> <pp><pre></pp> <pp> AutoPager.launchAutoPager(SITEINFO)</pp> <pp> AutoPager.launchAutoPager(res)</pp> <pp> AutoPager.launchAutoPager([MICROFORMAT])</pp> <pp> }</pp> <pp> })</pp> <pp>})</pp> <pp></pre></pp> <pp> </div> <div class="section"> <h3><a href="http://autopagerizecodereading.g.hatena.ne.jp/keyword/execution?kid=47#p2" name="p2"><span class="sanchor">■</span></a> 場所</pp>