そのversionってグローバル変数、本当に必要なのか?
こんなコメントを見たので、ふと調べてみた。
使ったのは、Welcome to vimpr! というスクリプトで、前回起動時との window オブジェクトの内容の差分を調べる Vimperator プラグイン。
んで、この下がその調べた結果、TMP が window オブジェクトにつっこむ変数群だよ!
- BUTTON_CANCEL
- BUTTON_EXTRA1
- BUTTON_OK
- CHECKBOX_CHECKED
- CHECKBOX_UNCHECKED
- Click2TabLoadBookmark
- DLG_RENAME
- DLG_SAVE
- DRAG_LINK
- DRAG_TAB_IN_SAME_WINDOW
- DRAG_TAB_TO_NEW_WINDOW
- HIDE_CHECKBOX
- HIDE_MENUANDTEXT
- HSitems
- NC_NS_TM
- NC_TM
- NO_NEED_TO_REPLACE
- NW_waitForSessionHistory
- SELECT_CRASH
- SELECT_DEFAULT
- SELECT_LASTSESSION
- SHOW_CLOSED_WINDOW_LIST
- SHOW_MENULIST
- SHOW_TEXTBOX
- SessionData
- SessionManager
- SessionPref
- TMP_Bookmark
- TMP_BrowserCloseWindow
- TMP_BrowserLoadURL
- TMP_BrowserOpenTab
- TMP_BrowserToolboxCustomizeDone
- TMP_ClosedTabs
- TMP_DOMWindowOpenObserver
- TMP_DragAndDrop_init
- TMP_LastTab
- TMP_LookForRSS
- TMP_Newsfox
- TMP_Places
- TMP_PrefObserver
- TMP_ProgressListener
- TMP_RSSTICKER
- TMP_Sanitizer
- TMP_SearchLoadURL
- TMP_SessionStore
- TMP_TBP_Startup
- TMP_TBP_init
- TMP_TabDragDrop
- TMP_TabDragExit
- TMP_TabDragGesture
- TMP_TabDragOver
- TMP_TabsListOncommand
- TMP_beforStartup
- TMP_checkAttr
- TMP_checkCurrent
- TMP_checkForPopup
- TMP_closeLastTab
- TMP_closeWindow
- TMP_cmd_options
- TMP_contentAreaClick
- TMP_contentAreaOnDrop
- TMP_delayedStartup
- TMP_divertMiddleClick
- TMP_divertTargetedLink
- TMP_eventListener
- TMP_existsFrameName
- TMP_getBoolPref
- TMP_getBrowserWindow
- TMP_getCharPref
- TMP_getIntPref
- TMP_goButtonClick
- TMP_helpContentClick
- TMP_howToOpen
- TMP_onRemoveTab
- TMP_openDialog
- TMP_openExSiteLink
- TMP_openUILink
- TMP_openURL
- TMP_setDragEvents
- TMP_setItem
- TMP_showItem
- TMP_suppressTabsOnFileDownload
- TMP_tabContextMenuShown
- TMP_tabOnAttrModified
- TMP_tabOnTabClose
- TMP_tabSelectedFromList
- TMP_updateContextMenu
- TMP_update_whereToOpen
- TMP_whereToOpen
- TMP_wizzrss
- TM_BrowserHome
- TM_PromptService
- TM_checkClick
- TM_checkContentMenu
- TM_creatMenuItems
- TM_hidePopup
- TM_init
- TM_onTabBarDblClick
- TMclickAction
- TMupdateSettings
- TabDNDObserver
- Tm_checkTabClick
- _BrowserToolboxCustomizeDone
- __TMP_LoadBarURL
- __contentAreaClick
- _confirmOpenTabs
- _createTabsList
- _getBookmarkTitle
- _restoreTab
- addtabx
- adjustOn2ndTab
- adjustSafebrowsingDimArea
- alwaysNewTab
- autoReloadDialogResult
- autoReloadTabID
- beforeCommonList
- checkBeforeAndAfter
- checkDomain
- checkForCtrlClick
- convertSession
- createCommonList
- createMenuItems
- createTabsList
- dialogParams
- disableExtensions
- dtMergeWindows
- dupScrollPosition
- flst
- gAutoReloadDialogAccepted
- gBackupLabel
- gCancelLabel
- gFirefox2DefaultTheme
- gHideElmParam
- gHideTabBar
- gIOService
- gIsFirefox3
- gIsFirefox31
- gObserver
- gOrigName
- gPref
- gRDFRoot
- gRowHeight
- gSavedName
- gSessionPath
- gSingleWindowMode
- gTMPprefObserver
- gTab
- gTabBarWidth
- gTabbarPosition
- gThisWin
- gThisWinClosedtabs
- gThisWinTabs
- gURIFixer
- gWidthFitTitle
- gWindowManager
- getClosedTab
- getExtensions
- getMultiRowAttribute
- getPref
- getRowHeight
- getTitleFromBookmark
- hideCommonList
- inSameRow
- inputText
- isAfterCtrlClick
- isBookmarkletTM
- isUrlForDownload
- is_ignorable
- menuItemTitle
- newMenuItems
- newMenuOrders
- numberOfWindows
- object2String
- onAutoReloadPopup
- onDoubleClick
- openInWebPanelTM
- openMultipleLinks
- prefStringTMBookmark
- prefStringTMHistory
- prefStringTMUseMiddleClick
- prompt_deinit
- prompt_extra1
- prompt_init
- reloadPage
- removeTabFromList
- saveClosedTab
- setTabBarHeight
- setTextZoom
- setURLBarFocus
- setupAutoReload
- showTabsListPopup
- tabBarScrollStatus
- tabBarWidthChange
- tabSorting
- tablib
- tabscroll
- tabxBranch
- tabxPrefs
- tabxTabAdded
- tabxleft
- tmLog
- tmRDFResource
- tmSHEntry
- tmSHistory
- toggleUderlineTabsLabel
- undocloseTabButtonObserver
- updateMenuItemActive
- updateMenuItemInactive
- updateStatusText
- waitForSessionHistory
- whereToOpenLinkTabmix
- windowEnumerator
なんじゃこりゃぁあああああ!!!
いくら何でも汚しすぎだろう…
/^TMP_.*/ ってやつはまぁ良いだろうけどさ…それをのぞいても多い。
オマケ: garbage_finder の使い方
- タブを全て閉じて、:addons だけ表示しておく
- TMP を無効化
- Firefox 再起動 (ここで TMP が無いときの window 状態を調べる)
- もいっかい再起動
- :garbages コマンドを実行
新しい拡張いれたら調べておくのも良いかも。
ここが綺麗だとお行儀が良い拡張ってわけじゃないが、お行儀が悪いのは分かるだろう。
TMP 以外にもたくさんあるっぽいよ!
改めて他の拡張なんかも調べてみると結構汚いのがちらほらと。
上のリストで、version が含まれていないのはそのせいでした。
(差分なので、元々ある場合は出力されない)
補足
上のリストにはもしかしたら TMP の仕業じゃないのもある"かも"しれません。
(TMP が入っていることで通常とは違う動作をする拡張があればあり得る)
ま、それがあったとしても誤差程度だとは思いますが。