rem: href = linkNode.href; 
add: href = new XPCNativeWrapper(linkNode, "href").href; 
context:   function hrefForClickEvent(event)  {    var target = event.target;    var linkNode;    var local_name = target.localName;    if (local_name) {      local_name = local_name.toLowerCase();    }        var isKeyPress = (event.type == "keypress");    switch (local_name) {      case "a":      case "area":      case "link":        if (target.hasAttribute("href"))           linkNode = target;        break;      case "input":        if ((event.target.type == "text") // text field            && !isKeyPress       // not a key event            && event.detail == 2 // double click            && event.button == 0 // left mouse button            && event.target.value.length == 0) { // no text has been entered          prefillTextBox(target); // prefill the empty text field if possible        }        break;      default:        linkNode = findParentNode(event.originalTarget, "a");        // <a> cannot be nested.  So if we find an anchor without an        // href, there is no useful <a> around the target        if (linkNode && !linkNode.hasAttribute("href"))          linkNode = null;        break;    }    var href;    if (linkNode) {      href = linkNode.href;    } else {      // Try simple XLink      linkNode = target;      while (linkNode) {        if (linkNode.nodeType == Node.ELEMENT_NODE) {          href = linkNode.getAttributeNS("http://www.w3.org/1999/xlink", "href");          break;        }        linkNode = linkNode.parentNode;      }      if (href && href != "") {        href = makeURLAbsolute(target.baseURI,href);      }    }    return href;  }
meta: 8395	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/8395/8e43941de7aed68ab3600a0fc5e6335f445035b1/contentAreaClick.js/clean/xpfe/communicator/resources/content/contentAreaClick.js