<tabbrowser ... onclick="return contentAreaClick(event, false);"/>
クリックしたノードがlinkNodeある場合、以下の条件に当てはまるなら、 loadURI(url, null, postData.value, false) を実行。
- event.button == 0 // 左クリック
- Ctrl, Shift, Alt, Meta のいずれもを押していない
- fieldNormalClicks が true かつ、a.targetが無い、または "_content" か "_main" である場合
- 以下の条件に当てはまる場合は return true
- href属性値がない
- onclick属性値がある
- href属性値が "javascript:" から始まっている
- href属性値が "data:" から始まっている
- (面倒だ省略)
- 以下の条件に当てはまる場合は return true
そうでない場合以外の場合、handleLinkClick(event, wrapper.href, linkNode) を実行
通常クリック時はこのメソッドでは処理されない(_fieldNormalClicks_がfalseであるため)
gBrowser.loadURIWithFlags(uri, flags, referrer, null, postData);
- 左クリックの場合
- Ctrl: openNewTabWith(href, doc, null, event, false)
- Shift + Alt: loadURI(href, null, null, false)
- Shift:openNewWindowWith(href, doc, null, false)
- Alt: saveURL( ... )
- 中ボタンの場合
- preference: browser.tabs.opentabfor.middleclick が true の場合
openNewTabWith(href, doc, null, event, false) - そうでない場合
openNewWindowWith(href, doc, null, false)
- preference: browser.tabs.opentabfor.middleclick が true の場合
JavaScriptレベルでは追えないと思われる。ワザとErrorを発生させてスタックを追うと、 chrome://browser/content/browser.js:4161 で gBrowser.loadOneTab メソッドを 実行していることが分かる。
引数は(a target="_blank")
- null
- [object XPCNativeWrapper]
- 3
- 2
これは nsBrowserAccess.prototype.openURI つまり、 window.browserDOMWindow.openURI である。