| 63 | | <head> |
|---|
| 64 | | <title>&loadError.label;</title> |
|---|
| 65 | | |
|---|
| 66 | | <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all" /> |
|---|
| 67 | | <!-- XXX this needs to be themeable --> |
|---|
| 68 | | <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAICSURBVHjaYvz//z8DJQAggJhwiDPvnmlzc2aR0O+JGezt+AwACCCsBhxfYhn59N41FWtXIxZOLu70niRGXVwGAAQQNgNYHj96O8HaWYdJW5ubwd4/mI2Ng7sblwEAAYRhwMm1URk/vn4SUNWVYGD8+YZBXZOZm5OLzRjoCmNsBgAEEKoBN82Y7l851GLrqMjM8Oc7A8O/3wwMP54wuAQFCXNycUzGZgBAAKEYcOaKZO2/f//5FbUVgBrfMoRVcgHpNwyKGjKMXDwCan0prFboBgAEELIBzDcvXyy2cVZhYPj9GWj7H4jo/38MDJ9OMDj7O/KzsjH3oxsAEEBwA/bNNipiZf7FI6cqwcDw8x2qqp8fGORUpVn4BEXlgGHhhCwFEEAwA9gfP3hdZ+Oizcjw+wvCdjgAuuLrFQbXIH9hTm7uqcgyAAEENuD4ctcebm5mbikFYRTbV7V/Q6j88Z5BSuY7q4CQgAjQFR4wYYAAAhtw89L5ZFsnRaDtn4CW/YXrAQcisit+PGVwDgrnZ2NnnwATBQggpsNLvGYLCAmxi8tLARWg+h3FBVBXSEj/ZZWQkRcCuiIQJAQQQCyvnj5KMDTkZ2JgYmRg4FchnHv+vmEwttLmeXT3VjKQtx4ggFgk5TXebV63UfT3ijOMxOZAVlZWdiB1EMQGCCBGSrMzQIABAFR3kRM3KggZAAAAAElFTkSuQmCC" /> |
|---|
| 69 | | |
|---|
| 70 | | <link rel="stylesheet" href="chrome://resurrect/skin/netError.css" type="text/css" media="all" /> |
|---|
| 71 | | |
|---|
| 72 | | <script type="application/x-javascript"><![CDATA[ |
|---|
| 73 | | // Error url MUST be formatted like this: |
|---|
| 74 | | // moz-neterror:page?e=error&u=url&d=desc |
|---|
| 75 | | |
|---|
| 76 | | // Note that this file uses document.documentURI to get |
|---|
| 77 | | // the URL (with the format from above). This is because |
|---|
| 78 | | // document.location.href gets the current URI off the docshell, |
|---|
| 79 | | // which is the URL displayed in the location bar, i.e. |
|---|
| 80 | | // the URI that the user attempted to load. |
|---|
| 81 | | |
|---|
| 82 | | function getErrorCode() |
|---|
| 83 | | { |
|---|
| 84 | | var url = document.documentURI; |
|---|
| 85 | | var error = url.search(/e\=/); |
|---|
| 86 | | var duffUrl = url.search(/\&u\=/); |
|---|
| 87 | | return decodeURIComponent(url.slice(error + 2, duffUrl)); |
|---|
| 88 | | } |
|---|
| 89 | | |
|---|
| 90 | | function getDescription() |
|---|
| 91 | | { |
|---|
| 92 | | var url = document.documentURI; |
|---|
| 93 | | var desc = url.search(/d\=/); |
|---|
| 94 | | |
|---|
| 95 | | // desc == -1 if not found; if so, return an empty string |
|---|
| 96 | | // instead of what would turn out to be portions of the URI |
|---|
| 97 | | if (desc == -1) return ""; |
|---|
| 98 | | |
|---|
| 99 | | return decodeURIComponent(url.slice(desc + 2)); |
|---|
| 100 | | } |
|---|
| 101 | | |
|---|
| 102 | | function retryThis() |
|---|
| 103 | | { |
|---|
| 104 | | // Session history has the URL of the page that failed |
|---|
| 105 | | // to load, not the one of the error page. So, just call |
|---|
| 106 | | // reload(), which will also repost POST data correctly. |
|---|
| 107 | | location.reload(); |
|---|
| 108 | | } |
|---|
| 109 | | |
|---|
| 110 | | function initPage() |
|---|
| 111 | | { |
|---|
| 112 | | var err = getErrorCode(); |
|---|
| 113 | | |
|---|
| 114 | | // if it's an unknown error or there's no title or description |
|---|
| 115 | | // defined, get the generic message |
|---|
| 116 | | var errTitle = document.getElementById("et_" + err); |
|---|
| 117 | | var errDesc = document.getElementById("ed_" + err); |
|---|
| 118 | | if (!errTitle || !errDesc) |
|---|
| 119 | | { |
|---|
| 120 | | errTitle = document.getElementById("et_generic"); |
|---|
| 121 | | errDesc = document.getElementById("ed_generic"); |
|---|
| 122 | | } |
|---|
| 123 | | |
|---|
| 124 | | var title = document.getElementById("errorTitleText"); |
|---|
| 125 | | if (title) |
|---|
| 126 | | { |
|---|
| 127 | | title.parentNode.replaceChild(errTitle, title); |
|---|
| 128 | | // change id to the replaced child's id so styling works |
|---|
| 129 | | errTitle.id = "errorTitleText"; |
|---|
| 130 | | } |
|---|
| 131 | | |
|---|
| 132 | | var sd = document.getElementById("errorShortDescText"); |
|---|
| 133 | | if (sd) |
|---|
| 134 | | sd.textContent = getDescription(); |
|---|
| 135 | | |
|---|
| 136 | | var ld = document.getElementById("errorLongDesc"); |
|---|
| 137 | | if (ld) |
|---|
| 138 | | { |
|---|
| 139 | | ld.parentNode.replaceChild(errDesc, ld); |
|---|
| 140 | | // change id to the replaced child's id so styling works |
|---|
| 141 | | errDesc.id = "errorLongDesc"; |
|---|
| 142 | | } |
|---|
| 143 | | |
|---|
| 144 | | // remove undisplayed errors to avoid bug 39098 |
|---|
| 145 | | var errContainer = document.getElementById("errorContainer"); |
|---|
| 146 | | errContainer.parentNode.removeChild(errContainer); |
|---|
| 147 | | } |
|---|
| 148 | | ]]></script> |
|---|
| 149 | | </head> |
|---|
| 150 | | |
|---|
| 151 | | <body dir="&locale.dir;"> |
|---|
| 152 | | |
|---|
| 153 | | <!-- ERROR ITEM CONTAINER (removed during loading to avoid bug 39098) --> |
|---|
| 154 | | |
|---|
| 155 | | <div id="errorContainer"> |
|---|
| 156 | | <div id="errorTitlesContainer"> |
|---|
| 157 | | <h1 id="et_generic">&generic.title;</h1> |
|---|
| 158 | | <h1 id="et_dnsNotFound">&dnsNotFound.title;</h1> |
|---|
| 159 | | <h1 id="et_fileNotFound">&fileNotFound.title;</h1> |
|---|
| 160 | | <h1 id="et_malformedURI">&malformedURI.title;</h1> |
|---|
| 161 | | <h1 id="et_protocolNotFound">&protocolNotFound.title;</h1> |
|---|
| 162 | | <h1 id="et_connectionFailure">&connectionFailure.title;</h1> |
|---|
| 163 | | <h1 id="et_netTimeout">&netTimeout.title;</h1> |
|---|
| 164 | | <h1 id="et_redirectLoop">&redirectLoop.title;</h1> |
|---|
| 165 | | <h1 id="et_unknownSocketType">&unknownSocketType.title;</h1> |
|---|
| 166 | | <h1 id="et_netReset">&netReset.title;</h1> |
|---|
| 167 | | <h1 id="et_netOffline">&netOffline.title;</h1> |
|---|
| 168 | | <h1 id="et_netInterrupt">&netInterrupt.title;</h1> |
|---|
| 169 | | <h1 id="et_deniedPortAccess">&deniedPortAccess.title;</h1> |
|---|
| 170 | | <h1 id="et_proxyResolveFailure">&proxyResolveFailure.title;</h1> |
|---|
| 171 | | <h1 id="et_proxyConnectFailure">&proxyConnectFailure.title;</h1> |
|---|
| | 66 | <head> |
|---|
| | 67 | <title>&loadError.label;</title> |
|---|
| | 68 | <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all" /> |
|---|
| | 69 | <link rel="icon" type="image/png" id="favicon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAICSURBVHjaYvz//z8DJQAggJhwiDPvnmlzc2aR0O+JGezt+AwACCCsBhxfYhn59N41FWtXIxZOLu70niRGXVwGAAQQNgNYHj96O8HaWYdJW5ubwd4/mI2Ng7sblwEAAYRhwMm1URk/vn4SUNWVYGD8+YZBXZOZm5OLzRjoCmNsBgAEEKoBN82Y7l851GLrqMjM8Oc7A8O/3wwMP54wuAQFCXNycUzGZgBAAKEYcOaKZO2/f//5FbUVgBrfMoRVcgHpNwyKGjKMXDwCan0prFboBgAEELIBzDcvXyy2cVZhYPj9GWj7H4jo/38MDJ9OMDj7O/KzsjH3oxsAEEBwA/bNNipiZf7FI6cqwcDw8x2qqp8fGORUpVn4BEXlgGHhhCwFEEAwA9gfP3hdZ+Oizcjw+wvCdjgAuuLrFQbXIH9hTm7uqcgyAAEENuD4ctcebm5mbikFYRTbV7V/Q6j88Z5BSuY7q4CQgAjQFR4wYYAAAhtw89L5ZFsnRaDtn4CW/YXrAQcisit+PGVwDgrnZ2NnnwATBQggpsNLvGYLCAmxi8tLARWg+h3FBVBXSEj/ZZWQkRcCuiIQJAQQQCyvnj5KMDTkZ2JgYmRg4FchnHv+vmEwttLmeXT3VjKQtx4ggFgk5TXebV63UfT3ijOMxOZAVlZWdiB1EMQGCCBGSrMzQIABAFR3kRM3KggZAAAAAElFTkSuQmCC"/> |
|---|
| | 70 | |
|---|
| | 71 | <script type="application/x-javascript"><![CDATA[ |
|---|
| | 72 | // Error url MUST be formatted like this: |
|---|
| | 73 | // moz-neterror:page?e=error&u=url&d=desc |
|---|
| | 74 | // |
|---|
| | 75 | // or optionally, to specify an alternate CSS class to allow for |
|---|
| | 76 | // custom styling and favicon: |
|---|
| | 77 | // |
|---|
| | 78 | // moz-neterror:page?e=error&u=url&s=classname&d=desc |
|---|
| | 79 | |
|---|
| | 80 | // Note that this file uses document.documentURI to get |
|---|
| | 81 | // the URL (with the format from above). This is because |
|---|
| | 82 | // document.location.href gets the current URI off the docshell, |
|---|
| | 83 | // which is the URL displayed in the location bar, i.e. |
|---|
| | 84 | // the URI that the user attempted to load. |
|---|
| | 85 | |
|---|
| | 86 | function getErrorCode() |
|---|
| | 87 | { |
|---|
| | 88 | var url = document.documentURI; |
|---|
| | 89 | var error = url.search(/e\=/); |
|---|
| | 90 | var duffUrl = url.search(/\&u\=/); |
|---|
| | 91 | return decodeURIComponent(url.slice(error + 2, duffUrl)); |
|---|
| | 92 | } |
|---|
| | 93 | |
|---|
| | 94 | function getCSSClass() |
|---|
| | 95 | { |
|---|
| | 96 | var url = document.documentURI; |
|---|
| | 97 | var matches = url.match(/s\=([^&]+)\&/); |
|---|
| | 98 | // s is optional, if no match just return nothing |
|---|
| | 99 | if (!matches || matches.length < 2) |
|---|
| | 100 | return ""; |
|---|
| | 101 | |
|---|
| | 102 | // parenthetical match is the second entry |
|---|
| | 103 | return decodeURIComponent(matches[1]); |
|---|
| | 104 | } |
|---|
| | 105 | |
|---|
| | 106 | function getDescription() |
|---|
| | 107 | { |
|---|
| | 108 | var url = document.documentURI; |
|---|
| | 109 | var desc = url.search(/d\=/); |
|---|
| | 110 | |
|---|
| | 111 | // desc == -1 if not found; if so, return an empty string |
|---|
| | 112 | // instead of what would turn out to be portions of the URI |
|---|
| | 113 | if (desc == -1) |
|---|
| | 114 | return ""; |
|---|
| | 115 | |
|---|
| | 116 | return decodeURIComponent(url.slice(desc + 2)); |
|---|
| | 117 | } |
|---|
| | 118 | |
|---|
| | 119 | function retryThis(buttonEl) |
|---|
| | 120 | { |
|---|
| | 121 | // Session history has the URL of the page that failed |
|---|
| | 122 | // to load, not the one of the error page. So, just call |
|---|
| | 123 | // reload(), which will also repost POST data correctly. |
|---|
| | 124 | try { |
|---|
| | 125 | location.reload(); |
|---|
| | 126 | } catch (e) { |
|---|
| | 127 | // We probably tried to reload a URI that caused an exception to |
|---|
| | 128 | // occur; e.g. a non-existent file. |
|---|
| | 129 | } |
|---|
| | 130 | |
|---|
| | 131 | buttonEl.disabled = true; |
|---|
| | 132 | } |
|---|
| | 133 | |
|---|
| | 134 | function initPage() |
|---|
| | 135 | { |
|---|
| | 136 | var err = getErrorCode(); |
|---|
| | 137 | |
|---|
| | 138 | if (err == "nssBadCert") { |
|---|
| | 139 | // Remove the "Try again" button for security exceptions, since it's |
|---|
| | 140 | // almost certainly useless. |
|---|
| | 141 | document.getElementById("errorTryAgain").style.display = "none"; |
|---|
| | 142 | } |
|---|
| | 143 | else { |
|---|
| | 144 | // Remove the override block for non-certificate errors. CSS-hiding |
|---|
| | 145 | // isn't good enough here, because of bug 39098 |
|---|
| | 146 | var secOverride = document.getElementById("securityOverrideDiv"); |
|---|
| | 147 | secOverride.parentNode.removeChild(secOverride); |
|---|
| | 148 | } |
|---|
| | 149 | |
|---|
| | 150 | // if it's an unknown error or there's no title or description |
|---|
| | 151 | // defined, get the generic message |
|---|
| | 152 | var errTitle = document.getElementById("et_" + err); |
|---|
| | 153 | var errDesc = document.getElementById("ed_" + err); |
|---|
| | 154 | if (!errTitle || !errDesc) |
|---|
| | 155 | { |
|---|
| | 156 | errTitle = document.getElementById("et_generic"); |
|---|
| | 157 | errDesc = document.getElementById("ed_generic"); |
|---|
| | 158 | } |
|---|
| | 159 | |
|---|
| | 160 | var title = document.getElementById("errorTitleText"); |
|---|
| | 161 | if (title) |
|---|
| | 162 | { |
|---|
| | 163 | title.parentNode.replaceChild(errTitle, title); |
|---|
| | 164 | // change id to the replaced child's id so styling works |
|---|
| | 165 | errTitle.id = "errorTitleText"; |
|---|
| | 166 | } |
|---|
| | 167 | |
|---|
| | 168 | var sd = document.getElementById("errorShortDescText"); |
|---|
| | 169 | if (sd) |
|---|
| | 170 | sd.textContent = getDescription(); |
|---|
| | 171 | |
|---|
| | 172 | var ld = document.getElementById("errorLongDesc"); |
|---|
| | 173 | if (ld) |
|---|
| | 174 | { |
|---|
| | 175 | ld.parentNode.replaceChild(errDesc, ld); |
|---|
| | 176 | // change id to the replaced child's id so styling works |
|---|
| | 177 | errDesc.id = "errorLongDesc"; |
|---|
| | 178 | } |
|---|
| | 179 | |
|---|
| | 180 | // remove undisplayed errors to avoid bug 39098 |
|---|
| | 181 | var errContainer = document.getElementById("errorContainer"); |
|---|
| | 182 | errContainer.parentNode.removeChild(errContainer); |
|---|
| | 183 | |
|---|
| | 184 | var className = getCSSClass(); |
|---|
| | 185 | if (className) { |
|---|
| | 186 | // Associate a CSS class with the root of the page, if one was passed in, |
|---|
| | 187 | // to allow custom styling. |
|---|
| | 188 | document.documentElement.className = className; |
|---|
| | 189 | |
|---|
| | 190 | // Also, if they specified a CSS class, they must supply their own |
|---|
| | 191 | // favicon. In order to trigger the browser to repaint though, we |
|---|
| | 192 | // need to remove/add the link element. |
|---|
| | 193 | var favicon = document.getElementById("favicon"); |
|---|
| | 194 | var faviconParent = favicon.parentNode; |
|---|
| | 195 | faviconParent.removeChild(favicon); |
|---|
| | 196 | favicon.setAttribute("href", "chrome://global/skin/icons/" + className + "_favicon.png"); |
|---|
| | 197 | faviconParent.appendChild(favicon); |
|---|
| | 198 | } |
|---|
| | 199 | } |
|---|
| | 200 | |
|---|
| | 201 | function showSecuritySection() { |
|---|
| | 202 | // Swap link out, content in |
|---|
| | 203 | document.getElementById('securityOverrideContent').style.display = ''; |
|---|
| | 204 | document.getElementById('securityOverrideLink').style.display = 'none'; |
|---|
| | 205 | } |
|---|
| | 206 | ]]></script> |
|---|
| | 207 | </head> |
|---|
| | 208 | |
|---|
| | 209 | <body dir="&locale.dir;"> |
|---|
| | 210 | |
|---|
| | 211 | <!-- ERROR ITEM CONTAINER (removed during loading to avoid bug 39098) --> |
|---|
| | 212 | <div id="errorContainer"> |
|---|
| | 213 | <div id="errorTitlesContainer"> |
|---|
| | 214 | <h1 id="et_generic">&generic.title;</h1> |
|---|
| | 215 | <h1 id="et_dnsNotFound">&dnsNotFound.title;</h1> |
|---|
| | 216 | <h1 id="et_fileNotFound">&fileNotFound.title;</h1> |
|---|
| | 217 | <h1 id="et_malformedURI">&malformedURI.title;</h1> |
|---|
| | 218 | <h1 id="et_protocolNotFound">&protocolNotFound.title;</h1> |
|---|
| | 219 | <h1 id="et_connectionFailure">&connectionFailure.title;</h1> |
|---|
| | 220 | <h1 id="et_netTimeout">&netTimeout.title;</h1> |
|---|
| | 221 | <h1 id="et_redirectLoop">&redirectLoop.title;</h1> |
|---|
| | 222 | <h1 id="et_unknownSocketType">&unknownSocketType.title;</h1> |
|---|
| | 223 | <h1 id="et_netReset">&netReset.title;</h1> |
|---|
| | 224 | <h1 id="et_netOffline">&netOffline.title;</h1> |
|---|
| | 225 | <h1 id="et_netInterrupt">&netInterrupt.title;</h1> |
|---|
| | 226 | <h1 id="et_deniedPortAccess">&deniedPortAccess.title;</h1> |
|---|
| | 227 | <h1 id="et_proxyResolveFailure">&proxyResolveFailure.title;</h1> |
|---|
| | 228 | <h1 id="et_proxyConnectFailure">&proxyConnectFailure.title;</h1> |
|---|
| | 229 | <h1 id="et_contentEncodingError">&contentEncodingError.title;</h1> |
|---|
| | 230 | <h1 id="et_unsafeContentType">&unsafeContentType.title;</h1> |
|---|
| | 231 | <h1 id="et_nssFailure2">&nssFailure2.title;</h1> |
|---|
| | 232 | <h1 id="et_nssBadCert">&nssBadCert.title;</h1> |
|---|
| | 233 | <h1 id="et_malwareBlocked">&malwareBlocked.title;</h1> |
|---|
| | 234 | </div> |
|---|
| | 235 | <div id="errorDescriptionsContainer"> |
|---|
| | 236 | <div id="ed_generic">&generic.longDesc;</div> |
|---|
| | 237 | <div id="ed_dnsNotFound">&dnsNotFound.longDesc;</div> |
|---|
| | 238 | <div id="ed_fileNotFound">&fileNotFound.longDesc;</div> |
|---|
| | 239 | <div id="ed_malformedURI">&malformedURI.longDesc;</div> |
|---|
| | 240 | <div id="ed_protocolNotFound">&protocolNotFound.longDesc;</div> |
|---|
| | 241 | <div id="ed_connectionFailure">&connectionFailure.longDesc;</div> |
|---|
| | 242 | <div id="ed_netTimeout">&netTimeout.longDesc;</div> |
|---|
| | 243 | <div id="ed_redirectLoop">&redirectLoop.longDesc;</div> |
|---|
| | 244 | <div id="ed_unknownSocketType">&unknownSocketType.longDesc;</div> |
|---|
| | 245 | <div id="ed_netReset">&netReset.longDesc;</div> |
|---|
| | 246 | <div id="ed_netOffline">&netOffline.longDesc;</div> |
|---|
| | 247 | <div id="ed_netInterrupt">&netInterrupt.longDesc;</div> |
|---|
| | 248 | <div id="ed_deniedPortAccess">&deniedPortAccess.longDesc;</div> |
|---|
| | 249 | <div id="ed_proxyResolveFailure">&proxyResolveFailure.longDesc;</div> |
|---|
| | 250 | <div id="ed_proxyConnectFailure">&proxyConnectFailure.longDesc;</div> |
|---|
| | 251 | <div id="ed_contentEncodingError">&contentEncodingError.longDesc;</div> |
|---|
| | 252 | <div id="ed_unsafeContentType">&unsafeContentType.longDesc;</div> |
|---|
| | 253 | <div id="ed_nssFailure2">&nssFailure2.longDesc;</div> |
|---|
| | 254 | <div id="ed_nssBadCert">&nssBadCert.longDesc2;</div> |
|---|
| | 255 | <div id="ed_malwareBlocked">&malwareBlocked.longDesc;</div> |
|---|
| | 256 | </div> |
|---|
| | 257 | </div> |
|---|
| | 258 | |
|---|
| | 259 | <!-- PAGE CONTAINER (for styling purposes only) --> |
|---|
| | 260 | <div id="errorPageContainer"> |
|---|
| | 261 | |
|---|
| | 262 | <!-- Error Title --> |
|---|
| | 263 | <div id="errorTitle"> |
|---|
| | 264 | <h1 id="errorTitleText" /> |
|---|
| | 265 | </div> |
|---|
| | 266 | |
|---|
| | 267 | <!-- LONG CONTENT (the section most likely to require scrolling) --> |
|---|
| | 268 | <div id="errorLongContent"> |
|---|
| | 269 | |
|---|
| | 270 | <!-- Short Description --> |
|---|
| | 271 | <div id="errorShortDesc"> |
|---|
| | 272 | <p id="errorShortDescText" /> |
|---|
| | 273 | </div> |
|---|
| | 274 | |
|---|
| | 275 | <!-- Long Description (Note: See netError.dtd for used XHTML tags) --> |
|---|
| | 276 | <div id="errorLongDesc" /> |
|---|
| | 277 | |
|---|
| | 278 | <!-- Override section - For ssl errors only. Removed on init for other |
|---|
| | 279 | error types. --> |
|---|
| | 280 | <div id="securityOverrideDiv"> |
|---|
| | 281 | <a id="securityOverrideLink" href="javascript:showSecuritySection();" >&securityOverride.linkText;</a> |
|---|
| | 282 | <div id="securityOverrideContent" style="display: none;">&securityOverride.warningText;</div> |
|---|
| | 283 | </div> |
|---|
| | 284 | </div> |
|---|
| | 285 | |
|---|
| | 286 | <!-- Retry Button --> |
|---|
| | 287 | <xul:button xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
|---|
| | 288 | id="errorTryAgain" label="&retry.label;" oncommand="retryThis(this);" /> |
|---|
| | 289 | |
|---|
| | 290 | <div id='resurrect'> |
|---|
| | 291 | <!-- fake elements that have IDs matching target selector --> |
|---|
| | 292 | <div id='targetTab' style='display: none;'></div> |
|---|
| | 293 | <div id='targetWin' style='display: none;'></div> |
|---|
| | 294 | |
|---|
| | 295 | <p>&resurrect.thispage;</p> |
|---|
| | 296 | <select id='mirror' size='6'> |
|---|
| | 297 | <option value='coralcdn'>&resurrect.coralcdn;</option> |
|---|
| | 298 | <option value='google'>&resurrect.google;</option> |
|---|
| | 299 | <option value='googletext'>&resurrect.google;&resurrect.textonly;</option> |
|---|
| | 300 | <option value='yahoo'>&resurrect.yahoo;</option> |
|---|
| | 301 | <option value='archive'>&resurrect.archive;</option> |
|---|
| | 302 | <option value='msn'>&resurrect.msn;</option> |
|---|
| | 303 | </select> |
|---|
| | 304 | <br /> |
|---|
| | 305 | |
|---|
| | 306 | <xul:button xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
|---|
| | 307 | id="mirrorSelect" label="&okButton.label;" |
|---|
| | 308 | /> |
|---|
| | 309 | </div> |
|---|
| | 310 | |
|---|
| 174 | | <div id="errorDescriptionsContainer"> |
|---|
| 175 | | <div id="ed_generic">&generic.longDesc;</div> |
|---|
| 176 | | <div id="ed_dnsNotFound">&dnsNotFound.longDesc;</div> |
|---|
| 177 | | <div id="ed_fileNotFound">&fileNotFound.longDesc;</div> |
|---|
| 178 | | <div id="ed_malformedURI">&malformedURI.longDesc;</div> |
|---|
| 179 | | <div id="ed_protocolNotFound">&protocolNotFound.longDesc;</div> |
|---|
| 180 | | <div id="ed_connectionFailure">&connectionFailure.longDesc;</div> |
|---|
| 181 | | <div id="ed_netTimeout">&netTimeout.longDesc;</div> |
|---|
| 182 | | <div id="ed_redirectLoop">&redirectLoop.longDesc;</div> |
|---|
| 183 | | <div id="ed_unknownSocketType">&unknownSocketType.longDesc;</div> |
|---|
| 184 | | <div id="ed_netReset">&netReset.longDesc;</div> |
|---|
| 185 | | <div id="ed_netOffline">&netOffline.longDesc;</div> |
|---|
| 186 | | <div id="ed_netInterrupt">&netInterrupt.longDesc;</div> |
|---|
| 187 | | <div id="ed_deniedPortAccess">&deniedPortAccess.longDesc;</div> |
|---|
| 188 | | <div id="ed_proxyResolveFailure">&proxyResolveFailure.longDesc;</div> |
|---|
| 189 | | <div id="ed_proxyConnectFailure">&proxyConnectFailure.longDesc;</div> |
|---|
| 190 | | </div> |
|---|
| 191 | | </div> |
|---|
| 192 | | |
|---|
| 193 | | <!-- PAGE CONTAINER (for styling purposes only) --> |
|---|
| 194 | | <div id="errorPageContainer"> |
|---|
| 195 | | <!-- Error Title --> |
|---|
| 196 | | <div id="errorTitle"> |
|---|
| 197 | | <h1 id="errorTitleText" /> |
|---|
| 198 | | </div> |
|---|
| 199 | | |
|---|
| 200 | | <!-- LONG CONTENT (the section most likely to require scrolling) --> |
|---|
| 201 | | <div id="errorLongContent"> |
|---|
| 202 | | <!-- Short Description --> |
|---|
| 203 | | <div id="errorShortDesc"> |
|---|
| 204 | | <p id="errorShortDescText" /> |
|---|
| 205 | | </div> |
|---|
| 206 | | |
|---|
| 207 | | <!-- Long Description (Note: See netError.dtd for used XHTML tags) --> |
|---|
| 208 | | <div id="errorLongDesc" /> |
|---|
| 209 | | </div> |
|---|
| 210 | | |
|---|
| 211 | | <!-- Retry Button --> |
|---|
| 212 | | <xul:button xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
|---|
| 213 | | id="errorTryAgain" label="&retry.label;" oncommand="retryThis();" |
|---|
| 214 | | /> |
|---|
| 215 | | |
|---|
| 216 | | <div id='resurrect'> |
|---|
| 217 | | <!-- fake elements that have IDs matching target selector --> |
|---|
| 218 | | <div id='targetTab' style='display: none;'></div> |
|---|
| 219 | | <div id='targetWin' style='display: none;'></div> |
|---|
| 220 | | |
|---|
| 221 | | <p>&resurrect.thispage;</p> |
|---|
| 222 | | <select id='mirror' size='6'> |
|---|
| 223 | | <option value='coralcdn'>&resurrect.coralcdn;</option> |
|---|
| 224 | | <option value='google'>&resurrect.google;</option> |
|---|
| 225 | | <option value='googletext'>&resurrect.google;&resurrect.textonly;</option> |
|---|
| 226 | | <option value='yahoo'>&resurrect.yahoo;</option> |
|---|
| 227 | | <option value='archive'>&resurrect.archive;</option> |
|---|
| 228 | | <option value='msn'>&resurrect.msn;</option> |
|---|
| 229 | | </select> |
|---|
| 230 | | <br /> |
|---|
| 231 | | |
|---|
| 232 | | <xul:button xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
|---|
| 233 | | id="mirrorSelect" label="&okButton.label;" |
|---|
| 234 | | /> |
|---|
| 235 | | </div> |
|---|
| 236 | | </div> |
|---|
| 237 | | |
|---|
| 238 | | <!-- |
|---|
| 239 | | - Note: It is important to run the script this way, instead of using |
|---|
| 240 | | - an onload handler. This is because error pages are loaded as |
|---|
| 241 | | - LOAD_BACKGROUND, which means that onload handlers will not be executed. |
|---|
| 242 | | --> |
|---|
| 243 | | <script type="application/x-javascript">initPage();</script> |
|---|
| 244 | | |
|---|
| 245 | | </body> |
|---|
| | 313 | <!-- |
|---|
| | 314 | - Note: It is important to run the script this way, instead of using |
|---|
| | 315 | - an onload handler. This is because error pages are loaded as |
|---|
| | 316 | - LOAD_BACKGROUND, which means that onload handlers will not be executed. |
|---|
| | 317 | --> |
|---|
| | 318 | <script type="application/x-javascript">initPage();</script> |
|---|
| | 319 | |
|---|
| | 320 | </body> |
|---|