Twilo: Parameter automatisch anhängen

Hallo,

ich hab mir eine Funktion gebastelt, mit der ich noch einige Probleme habe :(

function TEST() {  
  if (!document.getElementsByTagName) return;  
  var anchors = document.getElementsByTagName('a');  
  ref = location.href;  
  if (ref.indexOf('?') == -1) return;  
  qs = ref.substr(ref.indexOf('?')+1);  
  qsa = qs.split('&');  
  var suche = 'undefined';  
  for (i=0;i<qsa.length;i++) {  
    qsip = qsa[i].split('=');  
    if (qsip.length == 1) continue;  
    if (qsip[0] == 'q' || qsip[0] == 'p') {  
      suche = qsip[1];  
      break;  
    }  
  }  
  if (suche != 'undefined'){  
    for (var i=0; i<anchors.length; i++) {  
      var anchor = anchors[i];  
      if (anchor.href.indexOf('#') >= 1) continue;  
      if (anchor.href.indexOf('?') == -1) anchor.href = anchor.getAttribute('href')+'?q='+suche;  
      else anchor.href = anchor.getAttribute('href')+'&q='+suche;  
    }  
  }  
}

meine Probleme ;)

1. ein Link, wo nur "#top" drin steht, wird zu "?q=SUCHWORT#top"
ich habe schon versucht die Umschreibung mittels "if (anchor.href.indexOf('#') >= 1) continue;" zu verhindern, leider bewirkt das gar nichts

2. wie kann ich die Übergabe bei externen Link verhindern?
da bräuchte ich mal einen kleinen Tipp :-)

kann man die Funktion irgendwie kürzen?!

das ganze wird mittels window.onload = TEST; aufgerufen

mfg
Twilo

  1. Hallo,

    1. ein Link, wo nur "#top" drin steht, wird zu "?q=SUCHWORT#top"

    <a href="#top"> wird zu <a href="?q=SUCHWORT#top">? Das kann ich nicht nachvolziehen.

    ich habe schon versucht die Umschreibung mittels "if (anchor.href.indexOf('#') >= 1) continue;" zu verhindern, leider bewirkt das gar nichts

    Das funktioniert bei mir in allen Browsern, mit denen ich teste. Mit welchem Browser testest du?

    1. wie kann ich die Übergabe bei externen Link verhindern?

    Eine Möglichkeit: Bei einem externen Link unterscheidet sich anchor.hostname von location.hostname.
    http://de.selfhtml.org/javascript/objekte/links.htm#location

    kann man die Funktion irgendwie kürzen?!

    Soweit ich das sehe nicht.

    Mathias

    1. Hallo,

      1. ein Link, wo nur "#top" drin steht, wird zu "?q=SUCHWORT#top"

      <a href="#top"> wird zu <a href="?q=SUCHWORT#top">? Das kann ich nicht nachvolziehen.

      ich habe schon versucht die Umschreibung mittels "if (anchor.href.indexOf('#') >= 1) continue;" zu verhindern, leider bewirkt das gar nichts

      Das funktioniert bei mir in allen Browsern, mit denen ich teste. Mit welchem Browser testest du?

      mit  Opera 9.0, Internet Explorer 6 und Firefox 1.0.7
      alle 3 hängen bei mir ein ?q=SUCHWORT ran

      1. wie kann ich die Übergabe bei externen Link verhindern?

      Eine Möglichkeit: Bei einem externen Link unterscheidet sich anchor.hostname von location.hostname.
      http://de.selfhtml.org/javascript/objekte/links.htm#location

      danke, das werd ich mir nachher mal anschauen

      mfg
      Twilo

      1. Hallo,

        1. ein Link, wo nur "#top" drin steht, wird zu "?q=SUCHWORT#top"

        <a href="#top"> wird zu <a href="?q=SUCHWORT#top">? Das kann ich nicht nachvolziehen.

        ich habe schon versucht die Umschreibung mittels "if (anchor.href.indexOf('#') >= 1) continue;" zu verhindern, leider bewirkt das gar nichts

        Das funktioniert bei mir in allen Browsern, mit denen ich teste. Mit welchem Browser testest du?

        mit  Opera 9.0, Internet Explorer 6 und Firefox 1.0.7
        alle 3 hängen bei mir ein ?q=SUCHWORT ran

        ich hab ganz übersehen, dass der Originallink ja schon ein ?q=xyz hatte ;-)

        bevor ich die eine Zeile eingefügt hatte, sah es ja so aus "?q=SUCHWORT#top?q=SUCHWORT"

        mfg
        Twilo

    2. Hallo,

      1. wie kann ich die Übergabe bei externen Link verhindern?

      Eine Möglichkeit: Bei einem externen Link unterscheidet sich anchor.hostname von location.hostname.
      http://de.selfhtml.org/javascript/objekte/links.htm#location

      hab die 20. Zeile jetzt so abgeändert
      if (anchor.href.indexOf('#') >= 1 || anchor.hostname != location.hostname) continue;
      es scheint zu funktionieren :)

      thx!

      mfg
      Twilo