The following code provokes a TypeError: "this.editor is null"
in Seamonkey 2.14.1 (User agent: Mozilla/5.0 (Windows NT 6.1;
rv:17.0) Gecko/20100101 Firefox/17.0 SeaMonkey/2.14.1; Build
identifier: 20121129191119)
var features =
"menubar=no,location=no,resizable=yes,scrollbars=no,status=no,toolbar=no,width=480,height=320"
var name = "_feedback"
var location = 'SendMail.aspx?subject=' + window.location
window.open (location, name, features)}
yields :
Timestamp: 14/12/2012 13:17:37
Error: TypeError: this.editor is null
Source File: chrome://navigator/content/urlbarBindings.xml
Line: 104
The following is the referenced code :
<field name="_formattingEnabled">true</field>
<method name="_formatValue">
<parameter name="formattingEnabled"/>
<body><![CDATA[
var controller = this.editor.selectionController;
var selection =
controller.getSelection(controller.SELECTION_URLSECONDARY);
selection.removeAllRanges();
if (!formattingEnabled)
return;
var textNode = this.editor.rootElement.firstChild;
var value = textNode.textContent;
var protocol = value.match(/^[a-z\d.+\-]+:(?=[^\d])/);
if (protocol && !/^https?:|ftp:/.test(protocol[0]))
return;
var matchedURL =
value.match(/^((?:[a-z]+:\/\/)?(?:[^\/]+@)?)(.+?)(?::\d+)?(?:\/|$)/);
if (!matchedURL)
return;
var [, preDomain, domain] = matchedURL;
var subDomain = "";
// getBaseDomainFromHost doesn't recognize IPv6 literals in brackets
as IPs (bug 667159)
if (domain[0] != "[") {
try {
var baseDomain = Services.eTLD.getBaseDomainFromHost(domain);
if (baseDomain != domain) {
function dots(s) { return s.replace(/[^.]*/g, "").length; }
var subSegments = dots(domain) - dots(baseDomain);
subDomain = domain.match(new RegExp("(?:[^.]*\.){" +
subSegments + "}"))[0];
}
} catch (e) {}
}
var startLength = preDomain.length + subDomain.length;
if (startLength) {
var startRange = document.createRange();
startRange.setStart(textNode, 0);
startRange.setEnd(textNode, startLength);
selection.addRange(startRange);
}
var endLength = preDomain.length + domain.length;
if (endLength < value.length) {
var endRange = document.createRange();
endRange.setStart(textNode, endLength);
endRange.setEnd(textNode, value.length);
selection.addRange(endRange);
}
]]></body>
</method>
_______________________________________________
support-seamonkey mailing list
[email protected]
https://lists.mozilla.org/listinfo/support-seamonkey