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

Reply via email to