■
Firefox の View Source ウィンドウのタイトルが DOM Inspector で見ると正しく表示されない。常に Minefied/Mozilla Firefox のままになる。不便に感じたので適当に直した。
diff --git a/toolkit/components/viewsource/content/viewPartialSource.js b/toolkit/components/viewsource/content/viewPartialSource.js --- a/toolkit/components/viewsource/content/viewPartialSource.js +++ b/toolkit/components/viewsource/content/viewPartialSource.js @@ -70,16 +70,18 @@ function onLoadViewPartialSource() } catch (e) { } try { document.getElementById("menu_highlightSyntax").setAttribute("checked", gPrefs.getBoolPref("view_source.syntax_highlight")); } catch (e) { } } else { document.getElementById("menu_highlightSyntax").setAttribute("hidden", "true"); } + + getBrowser().addEventListener("DOMTitleChanged", updateTitlebar, true); if (window.arguments[3] == 'selection') viewPartialSourceForSelection(window.arguments[2]); else viewPartialSourceForFragment(window.arguments[2], window.arguments[3]); window._content.focus(); } @@ -502,8 +504,26 @@ function unicodeTOentity(text) // replace chars in our charTable str = str.replace(/[<>&"]/g, charTableLookup); // replace chars > 0x7f via nsIEntityConverter str = str.replace(/[^\0-\u007f]/g, convertEntity); return str; } + +function updateTitlebar() { + var newTitle = ""; + var docTitle; + var docElement = document.documentElement; + if (getBrowser().docShell.contentViewer) + docTitle = getBrowser().contentTitle; + + var modifier = docElement.getAttribute("titlemodifier"); + if (docTitle) { + newTitle += docElement.getAttribute("titlepreface"); + newTitle += docTitle; + if (modifier) + newTitle += docElement.getAttribute("titlemenuseparator"); + } + newTitle += docElement.getAttribute("titlemodifier"); + document.title = newTitle; +} diff --git a/toolkit/components/viewsource/content/viewPartialSource.xul b/toolkit/components/viewsource/content/viewPartialSource.xul --- a/toolkit/components/viewsource/content/viewPartialSource.xul +++ b/toolkit/components/viewsource/content/viewPartialSource.xul @@ -52,17 +52,16 @@ %brandDTD; <!ENTITY % sourceDTD SYSTEM "chrome://global/locale/viewSource.dtd" > %sourceDTD; ]> <window id="viewSource" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="onLoadViewPartialSource();" - contenttitlesetting="true" title="&mainWindow.title;" titlemodifier="&mainWindow.titlemodifier;" titlepreface="" titlemenuseparator ="&mainWindow.titlemodifierseparator;" windowtype="navigator:view-source" width="500" height="300" screenX="10" screenY="10" persist="screenX screenY width height sizemode"> diff --git a/toolkit/components/viewsource/content/viewSource.js b/toolkit/components/viewsource/content/viewSource.js --- a/toolkit/components/viewsource/content/viewSource.js +++ b/toolkit/components/viewsource/content/viewSource.js @@ -151,16 +151,17 @@ function viewSource(url) { if (!url) return false; // throw Components.results.NS_ERROR_FAILURE; var viewSrcUrl = "view-source:" + url; getBrowser().addEventListener("unload", onUnloadContent, true); getBrowser().addEventListener("load", onLoadContent, true); + getBrowser().addEventListener("DOMTitleChanged", updateTitlebar, true); var loadFromURL = true; // // Parse the 'arguments' supplied with the dialog. // arg[0] - URL string. // arg[1] - Charset value in the form 'charset=xxx'. // arg[2] - Page descriptor used to load content from the cache. // arg[3] - Line number to go to. @@ -737,8 +738,26 @@ function UpdateBackForwardCommands(aWebN if (forwardDisabled == aWebNavigation.canGoForward) { if (forwardDisabled) forwardBroadcaster.removeAttribute("disabled"); else forwardBroadcaster.setAttribute("disabled", true); } } + +function updateTitlebar() { + var newTitle = ""; + var docTitle; + var docElement = document.documentElement; + if (getBrowser().docShell.contentViewer) + docTitle = getBrowser().contentTitle; + + var modifier = docElement.getAttribute("titlemodifier"); + if (docTitle) { + newTitle += docElement.getAttribute("titlepreface"); + newTitle += docTitle; + if (modifier) + newTitle += docElement.getAttribute("titlemenuseparator"); + } + newTitle += docElement.getAttribute("titlemodifier"); + document.title = newTitle; +} diff --git a/toolkit/components/viewsource/content/viewSource.xul b/toolkit/components/viewsource/content/viewSource.xul --- a/toolkit/components/viewsource/content/viewSource.xul +++ b/toolkit/components/viewsource/content/viewSource.xul @@ -54,17 +54,16 @@ <!ENTITY % sourceDTD SYSTEM "chrome://global/locale/viewSource.dtd" > %sourceDTD; ]> <window id="viewSource" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="onLoadViewSource();" onunload="onUnloadViewSource();" - contenttitlesetting="true" title="&mainWindow.title;" titlemodifier="&mainWindow.titlemodifier;" titlepreface="&mainWindow.preface;" titlemenuseparator ="&mainWindow.titlemodifierseparator;" windowtype="navigator:view-source" width="640" height="480" screenX="10" screenY="10" persist="screenX screenY width height sizemode">
メモ
- nsContentTreeOwner::SetTitle
<xul:window> の contenttitlesetting 属性が true だと、この関数がウィンドウのタイトルを良しなに設定してくれるが、(XUL ドキュメントの) document.title は設定してくれない。document.title が設定されていないと DOM Inspector がタイトルを正しく認識しないみたい。
- <tabbrowser> の updateTitlebar()
<tabbrowser> の document.title を良しなに設定する関数。
- Bug 462997 - [Port Bug 454949] On reload Current Build ID disappears from the title bar (Nightly Tester Tools thing)
contenttitlesetting 属性は消えゆく運命?