HaThoV: Geänderte HREF erkennt Funktion nicht an

FsmE,

ich ändere das Attribut 'href' eines 'area'-Tags mit:

document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))

Das wird auch korrekt übernommen. Allerdings behauptet der Brauser bei Aufruf, die Funktion wäre nicht definiert (obwohl sie es zweifelsfrei ist)

Wer kennt den Grund und weiß möglicherweise Abhilfe?

dankelschonmalschön,
HaThoV

  1. Hi,

    document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
    Das wird auch korrekt übernommen.

    ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. FsmE,

      document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
      Das wird auch korrekt übernommen.

      ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.

      Warum?

      HaThoV

      1. Hi,

        document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
        Das wird auch korrekt übernommen.

        ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
        Warum?

        Weil die Engine nicht weiß, wo der Parameter-String aufhören soll.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        1. FsmE,

          Sorry, beim Übertragen das "'" vergessen. Richtig:

          document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc")')

          und wie gesagt: das Attribut wird übernommen, aber die Ausführung verweigert, weil angeblich die Funktion "funktion()" nicht definiert ist, was aber nicht stimmt. *Das* ist mein Problem.

          Hi,

          document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))
          Das wird auch korrekt übernommen.

          ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
          Warum?

          Weil die Engine nicht weiß, wo der Parameter-String aufhören soll.

          cu,
          Andreas

          In sensibus mistis,
          HaThoV

          --
          Besuchen Sie http://www.4html.de, wenn Sie an einer
          Neuen Generation von Web-Publishing mitarbeiten wollen.
          1. Hi,

            Sorry, beim Übertragen das "'" vergessen. Richtig:

            das ist einer der Gründe, weshalb ein anderes Vorgehen als Copy&Paste sinnfrei ist.

            und wie gesagt: das Attribut wird übernommen, aber die Ausführung verweigert, weil angeblich die Funktion "funktion()" nicht definiert ist, was aber nicht stimmt.

            Wie hast Du die letztgenannte Behauptung ermittelt?

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. FsmE,

              Wie hast Du die letztgenannte Behauptung ermittelt?

              Indem ich ebendiese Funktion selbst geschrieben und ihre Lauffähigkeit auch geprüft habe.

              In sensibus mistis,
              HaThoV

              --
              Besuchen Sie http://www.4html.de, wenn Sie an einer
              Neuen Generation von Web-Publishing mitarbeiten wollen.
              1. Hi,

                Wie hast Du die letztgenannte Behauptung ermittelt?
                Indem ich ebendiese Funktion selbst geschrieben und ihre Lauffähigkeit auch geprüft habe.

                Du hast sie geschrieben, sie ist lauffähig. Gut. Aber wie hast Du ermittelt, dass sie _da_ ist?

                Nur als kleiner Denkanstoß: Schon nach einem simplen document.write() wäre die Funktion vernichtet, oder bei einem davor auftretenden JavaScript-Fehler gar nicht erst da. Ich will auf die Frage hinaus, ob Du _sicher_ bist, dass nichts dergleichen passiert sein kann.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hallo Cheatah,

                  Ich will auf die Frage hinaus, ob Du _sicher_ bist, dass nichts dergleichen passiert sein kann.

                  Kein document.write, kein vorangegangener JS-Fehler. Und alles andere funktioniert.

                  In sensibus mistis,
                  HaThoV

                  --
                  Besuchen Sie http://www.4html.de, wenn Sie an einer
                  Neuen Generation von Web-Publishing mitarbeiten wollen.
                  1. Ich will auf die Frage hinaus, ob Du _sicher_ bist, dass nichts dergleichen passiert sein kann.

                    Kein document.write, kein vorangegangener JS-Fehler. Und alles andere funktioniert.

                    also es gibt keinen Fehler und trotzdem funktioniert nichts? Das ist Voodoo.

                    Worauf Cheatah hinaus will ist, was hast du getetstet?

                    Meine onclick Variante?
                    Hast du mal ein simples alert eingebaut?
                    Oder ein alert( typeof (funktion) )?

                    Weil so wie du dein Problem beschreibst funktioniert es bei mir.

                    struppi.

                    1. FsmE,

                      Worauf Cheatah hinaus will ist, was hast du getetstet?

                      Meine onclick Variante?

                      Habe sie getestet, durchgeführt und sie funktioniert sowohl auf IE55 als auch auf MOZ16. Dankeschön.

                      Ich weiß allerdings immer noch nicht, warum ein durch "javascript:..." ersetzter HREF zwar eingetragen wird, aber bei Aktiverung behauptet, die Funktion sei nicht definiert.

                      also es gibt keinen Fehler und trotzdem funktioniert nichts? Das ist Voodoo.

                      Wahrscheinlich ist das so :-)

                      In sensibus mistis,
                      HaThoV

                      --
                      Besuchen Sie http://www.4html.de, wenn Sie an einer
                      Neuen Generation von Web-Publishing mitarbeiten wollen.
                  2. Hi,

                    Kein document.write, kein vorangegangener JS-Fehler.

                    auch kein sonstiges Problem, welches uns zwei beiden gerade nicht einfällt? Hast Du mal versucht, eine Referenz auf die Funktion herauszu-alert()en? Andere Debug-Ausgaben? Tests in verschiedenen Browsern?

                    Cheatah

                    --
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
      2. Hi,

        ungewöhnlich. Ich als JavaScript-Engine würde den Syntax-Fehler anmeckern.
        Warum?

        ich kann nicht widerstehen, mit Reinhold Messner zu antworten: Weil er da ist.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          ich kann nicht widerstehen, mit Reinhold Messner zu antworten: Weil er da ist.

          Wo ist der Yeti? ;-)

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          1. Hi,

            [...] Weil er da ist.
            Wo ist der Yeti? ;-)

            wie ich schon sagte: da! ;-)

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. hi,

    document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))

    warum willst du eine javascript-funktion über href eines links aufrufen?
    absolut pfui-bah.
    nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.

    gruss,
    wahsaga

    1. Hi,

      warum willst du eine javascript-funktion über href eines links aufrufen?
      absolut pfui-bah.

      im Prinzip ja.

      nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.

      Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links? ;-)

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. hi,

        nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.

        Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links? ;-)

        deshalb soll er ja bereits _vorher_ im href eine sinnvolle alternative hinterlegen.

        gruss,
        wahsaga

        1. Hi,

          Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links? ;-)
          deshalb soll er ja bereits _vorher_ im href eine sinnvolle alternative hinterlegen.

          vielleicht hat er das ja und benutzt gerade _deswegen_ den DOM-Zugriff ;-)

          Cheatah

          --
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. FsmE,

            vielleicht hat er das ja und benutzt gerade _deswegen_ den DOM-Zugriff ;-)

            Du hasts erfaßt!

            In sensibus mistis,
            HaThoV

            --
            Besuchen Sie http://www.4html.de, wenn Sie an einer
            Neuen Generation von Web-Publishing mitarbeiten wollen.
      2. FsmE,

        Wie viele Nutzer ohne JavaScript kommen Deiner Ansicht nach in den Genuss eines per DOM-Zugriff manipulierten Links?

        Die, die einen DOM-fähigen Brauser haben. Die anderen kriegen funktionsfähiges DummHTML.

        In sensibus mistis,
        HaThoV

        --
        Besuchen Sie http://www.4html.de, wenn Sie an einer
        Neuen Generation von Web-Publishing mitarbeiten wollen.
    2. FsmE,

      warum willst du eine javascript-funktion über href eines links aufrufen?

      Weil ich eine ohne JS durchaus lauffähige Version einer HTML-Datei mithilfe von JS aufmotzen will für die Leute, die einen DOM-fähigen Brauser haben.

      absolut pfui-bah.

      Also nix "pfui bäh"

      nutze onClick stattdessen, und stelle wenn möglich im href eine alternative für nutzer ohne JS bereit.

      "onclick" hat das Problem, daß der IE55 das nicht ordentlich handelt bei JS-Steuerung.

      In sensibus mistis,
      HaThoV

      --
      Besuchen Sie http://www.4html.de, wenn Sie an einer
      Neuen Generation von Web-Publishing mitarbeiten wollen.
  3. Hallo HaThoV

    FsmE,

    ich ändere das Attribut 'href' eines 'area'-Tags mit:

    document.getElementsByTagName('area')[n].setAttribute('href','javascript:funktion("abc"))

    Ein bisschen kontrollieren, was überhaupt passiert ist nie verkekrt, vor allem wenn nicht das passiert was man erwartet:

    var area = document.getElementsByTagName('area');
    if(!area || !area[n]) return alert('Fehler');

    Daneben willst du ja nicht die Ziel URL ändern, sondern den onclick Event mit einer eigenen Funktion füllen, also mach dies:

    area[n].onclick= function()
    {
    funktion('abc');
    return false;
    };

    Struppi.

    1. Hallo Struppi,

      Daneben willst du ja nicht die Ziel URL ändern, sondern den onclick Event mit einer eigenen Funktion füllen, also mach dies:

      Dochdoch. Ich will die ursprüngliche URI durch einen JS-Funktionsaufruf *ersetzen* und nicht durch einen "onclick" ergänzen.

      In sensibus mistis,
      HaThoV

      --
      Besuchen Sie http://www.4html.de, wenn Sie an einer
      Neuen Generation von Web-Publishing mitarbeiten wollen.
      1. Daneben willst du ja nicht die Ziel URL ändern, sondern den onclick Event mit einer eigenen Funktion füllen, also mach dies:

        Dochdoch. Ich will die ursprüngliche URI durch einen JS-Funktionsaufruf *ersetzen* und nicht durch einen "onclick" ergänzen.

        Sie wird auch nicht ergänzt. Das return false sorgt dafür das der href teil nicht mehr angesprungen wird.

        Struppi.