DieBoxershort: Link nur mit ausgewählter Checkbox ausführen

Hallo Leute,

Ich würde gerne meherer lokale links auf einer html-seite mit einer Checkbox angeben.
Bei jedem Link wo der Haken gesetzt wurde sollte der link ausgeführt werden (nachdem auf eine "Submit-Button" geklickt wurde).

Könnt ihr mir dabei helfen?
Oder sind Checkboxen nur für ein <form> zu gebrauchen

Danke schonmal im vorraus

  1. @@DieBoxershort:

    nuqneH

    Oder sind Checkboxen nur für ein <form> zu gebrauchen

    Submit-buttons sind nur innerhalb eines Formulars zu gebrauchen.

    Vielleicht gibst du dir etwas mehr Mühe, dein Problem zu beschreiben?

    Qapla'

    --
    Volumen einer Pizza mit Radius z und Dicke a: pi z z a
    1. So ich versuchs nochmal:

      Ich möchte Meherer Links untereinander stehen haben:

      ->Link1
      ->Link2
      ->Link3

      hinter jedem Link steckt eine CMD Datei.

      Jetzt möchte ich aber nicht jeden Link einzelnt anklicken um ihn auszuführen.
      Sondern z.B. vor jedem Link die möglichkeit haben ein Hacken setzen.
      z.B:
       <input type="checkbox"  href="bla.html" target="_blank"><a>Link1</a><br>
       <input type="checkbox"  href="bla.html" target="_blank"><a>Link2</a><br>
       <input type="checkbox"  href="bla.html" target="_blank"><a>Link3</a><br>

      Meine Frage ist, ob es möglich wäre das mit der Checkbox zu realisieren?

      1. @@DieBoxershort:

        nuqneH

        So ich versuchs nochmal:

        Gelungen ist es dir nicht.

        hinter jedem Link steckt eine CMD Datei.

        Eine was? Und ↗Deppenleerzeichen.

        Jetzt möchte ich aber nicht jeden Link einzelnt anklicken um ihn auszuführen.

        Sondern?

        Sondern z.B. vor jedem Link die möglichkeit haben ein Hacken setzen.

        Den Hacken des linken oder des rechten Fußes? Die Idee würde ich unter Ulk abhaken.

        <input type="checkbox"  href="bla.html" target="_blank"><a>Link1</a>

        'input'-Elemente haben werder @href noch @target.

        Meine Frage ist, ob es möglich wäre das mit der Checkbox zu realisieren?

        Mein Frage ist (immer noch): Was ist „das“?

        Qapla'

        --
        Volumen einer Pizza mit Radius z und Dicke a: pi z z a
        1. Ich habe lokal auf meinem Computer CMD-Dateinen

          http://de.wikipedia.org/wiki/Cmd.exe.

          Und will die über eine HTML-Seite ausführen.

          <a href="file://C:\Data\Homepage\test.cmd" style="text-decoration:none" >Lotus Notes</a><br>

          das funktioniert auch.

          Jetzt habe ich aber 10 weitere CMD-Dateien und möchte nicht jede einzelnt anklicken um sie auszuführen.

          Gibt es jetzt die möglichkeit über z.b. type="checkbox"
          mehere links auszuwählen und diese dann  zusammen zu starten?

          1. Hallo,

            <a href="file://C:\Data\Homepage\test.cmd" style="text-decoration:none" >Lotus Notes</a><br>

            das funktioniert auch.

            Aha. Und was steht anschließend im Browser-Fenster, nachdem du den Link angeklickt hast? Vermutlich nichts mehr, oder?

            Jetzt habe ich aber 10 weitere CMD-Dateien und möchte nicht jede einzelnt anklicken um sie auszuführen.

            Gibt es jetzt die möglichkeit über z.b. type="checkbox"
            mehere links auszuwählen und diese dann  zusammen zu starten?

            Der IE kann  z.B. .hta -Dateien laden, die für sowas besser geeignet sind als normale HTML-Dateien. Damit würde es sicher gehen. Für FF gibt es XUL, ist wohl auch besser für deinen Zweck.

            Wenn nach dem Klick dein Fenster leer ist (siehe meine Frage oben), wird's mit .html-Dateien schwierig bis unmöglich.

            Gruß, Don P

            1. Aha. Und was steht anschließend im Browser-Fenster, nachdem du den Link angeklickt hast? Vermutlich nichts mehr, oder?

              Das Browserfenster ändert sich nicht.
              Es erscheint einfach eine Security Warning ob ich das Programm ausführen oder Speichern will.
              Danch bekomm ich das Fenster wieder ganz normal angezeigt.

              Der IE kann  z.B. .hta -Dateien laden, die für sowas besser geeignet sind als normale HTML-Dateien. Damit würde es sicher gehen. Für FF gibt es XUL, ist wohl auch besser für deinen Zweck.

              Es müste mit dem IE gehen leider =/

              MFG

              1. Hallo,

                Aha. Und was steht anschließend im Browser-Fenster, nachdem du den Link angeklickt hast? Vermutlich nichts mehr, oder?

                Der IE kann  z.B. .hta -Dateien laden, die für sowas besser geeignet sind als normale HTML-Dateien. Damit würde es sicher gehen. Für FF gibt es XUL, ist wohl auch besser für deinen Zweck.

                Es müste mit dem IE gehen leider =/

                Das ist kein großes Problem :-)
                Baue mit JScript oder VBScript eine Liste der Batchdateien zusammen und rufe die einzelnen Batchdateien in einer Schleife auf. Nutze dazu den Windows Scripting Host. Batchdateien kannst Du über Aufruf einer Kommandozeile mit entsprechenden Parametern ausführen lassen.

                Möglicherweise hilfreiche Archivbeiträge:

                • </archiv/2007/1/t144787/#m939388>
                • </archiv/2007/10/t160894/#m1047574>

                Freundliche Grüße

                Vinzenz

              2. danke bin jetzt weitergekommen

                MFG

                1. Hallo,

                  danke bin jetzt weitergekommen

                  offensichtlich noch nicht wirklich.

                  a) Verwende keine Links.
                  b) Sammle die auszuführenden Batchdateien in einem Array.
                  c) Durchlaufe am Ende das Array und lasse für jeden Eintrag das Kommando
                     ausführen.
                  d) Verwende dafür den Windows Scripting Host.
                  e) Es wäre nicht die schlechteste Idee, für diese Anwendung eine HTA zu
                     verwenden.

                  Freundliche Grüße

                  Vinzenz

                  1. Hallo,

                    füllen wir die Sache mit etwas Fleisch:

                    offensichtlich noch nicht wirklich.
                    a) Verwende keine Links.

                    Du hast offensichtlich eine Liste von Batchdateien, also verwendest Du am besten eine Liste :-)

                    Du könntest mit folgendem HTML (und etwas CSS, damits hübscher aussieht) starten:

                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  
                           "http://www.w3.org/TR/html4/strict.dtd">  
                    <html>  
                    <head>  
                        <title>Starte meine Lieblingsbatches</title>  
                    </head>  
                    <body>  
                        <ul>  
                            <li>  
                                <--  
                                    Verwende ein Label für die Beschriftung.  
                                    Dann kann man auch auf die Beschriftung klicken.  
                                -->  
                                <[ref:self812;html/formulare/strukturieren.htm#label@title=label] for="notes">Lotus Notes</label>  
                                <--  
                                    Beachte: Wert des for-Attributes des label-Elementes muss  
                                    mit dem Wert des id-Elementes der Checkbox übereinstimmen  
                      
                                    Wir nutzen das value-Attribut, um den Pfad zur Batchdatei  
                                    unterzubringen.  
                                -->  
                                <input id="notes"  
                                       type="checkbox"  
                                       value="L:\\batch\\notes.cmd">  
                            </li>  
                            <li>  
                                <label for="sol">Fun</label>  
                                <input id="sol"  
                                       type="checkbox"  
                                       value="L:\\batch\\sol.cmd">  
                            </li>  
                    	<li>  
                                <label for="notepad">Harte Arbeit</label>  
                                <input id="notepad"  
                                       type="checkbox"  
                                       value="L:\\batch\\notepad.cmd">  
                            </li>  
                        </ul>  
                        <--  
                            Ein Klickbutton zum Starten der angehakten Batchdateien.  
                            Dies wird eine selbstdefinierte Funktion mit dem Namen  
                              start_all_batches()  
                            für uns tun.  
                        -->  
                        <[ref:self812;html/formulare/klickbuttons.htm@title=button] onclick="[code lang=javascript]start_all_batches();
                    ~~~">  
                            Starte ausgewählte Batchdateien  
                        </button>  
                    </body>  
                    </html>  
                      
                      
                    [/code]  
                    
                    > b) Sammle die auszuführenden Batchdateien in einem Array.  
                      
                    was unsere Funktion start\_all\_batches() zu tun hat. Um die Checkboxen zu durchlaufen, gehen wir so vor, wie es frankx in [diesem Archivbeitrag](/archiv/2008/1/t165119/#m1076529) zeigt:  
                      
                      
                    ~~~javascript
                      function start_all_batches() {  
                          // Wir verschaffen uns eine Sammlung aller Input-Elemente,  
                          var my_inputs = [ref:self812;javascript/objekte/document.htm#get_elements_by_tag_name@title=document.getElementsByTagName]("input");  
                          // ermitteln ihre Anzahl  
                          var my_inputs_count = my_inputs.[ref:self812;javascript/objekte/array.htm#length@title=length];			  
                          // und bereiten ein Array für die auszuführenden Batchdateien vor.  
                          var command_list = new [ref:self812;javascript/objekte/array.htm#allgemeines@title=Array]();  
                    			  
                          // Wir durchlaufen die Sammlung der Input-Elemente  
                          for (var i = 0; i < my_inputs_count; i++) {  
                              // und tun nur etwas, wenn es sich um eine Checkbox handelt,  
                              // die ausgewählt ist.  
                              // Dazu nutzen wir die Element-Eigenschaften  
                              //    [ref:self812;javascript/objekte/elements.htm#type@title=type]  
                              //    [ref:self812;javascript/objekte/elements.htm#checked@title=checked]  
                              if (my_inputs[i].type == "checkbox" && my_inputs[i].[ref:self812;javascript/objekte/elements.htm#checked@title=checked]) {  
                                  // dann packen wir den Inhalt des value-Attributes,  
                                  // das heißt unseren Pfad zur Batchdatei, in das Array, das  
                                  // alle auszuführenden Kommandos enthalten wird.  
                    	      command_list.push(my_inputs[i].[ref:self812;javascript/objekte/elements.htm#value@title=value]);  
                              }  
                          }  
                      
                    
                    > // c) Durchlaufe am Ende das Array und lasse für jeden Eintrag das Kommando  
                    > //   ausführen.  
                      
                          // Jetzt haben wir in unserem Array command_list alle auszuführenden  
                          // Kommandos als Arrayelemente und müssen sie nur noch der Reihe nach  
                          // ausführen. Wir durchlaufen auch dieses Array mit einer for-Schleife  
                          // und überlassen das Ausführen des Kommandos einer Hilfsfunktion  
                          //     start_batch(command)  
                          // der wir das auszuführende Kommando als Argument übergeben.  
                    	  
                          // Wir ermitteln, wieviele Kommandos in unserer Kommandoliste drin sind.  
                          var my_command_count = command_list.length;  
                          for (var i = 0; i < my_command_count; i++) {  
                              // und starten für jeden Eintrag unsere Hilfsfunktion  
                              start_batch(command_list[i]);  
                          }  
                      }  
                    
                    

                    d) Verwende dafür den Windows Script Host.

                    wie im bereits verlinkten Beitrag verwenden wir (hier noch ohne Fehlerprüfung) den dort gezeigten Mechanismus mit dem Windows Scripting Host. Funktioniert nur im IE :-)

                      function start_batch(command) {  
                          // Wir benötigen Zugriff auf die Windows-Shell, dazu nutzen wir das  
                          // WshShell-Objekt  
                          var wshShell = new ActiveXObject("[link:http://msdn.microsoft.com/en-us/library/aew9yb99%28v=VS.85%29.aspx@title=WScript.Shell]");  
                          if (wshShell) {  
                              // und lassen mit der [link:http://msdn.microsoft.com/en-us/library/ateytk4a%28v=VS.85%29.aspx@title=Exec-Methode] unser Kommando ausführen  
                              var oExec = wshShell.Exec(command);  
                          }  
                      }
                    

                    e) Es wäre nicht die schlechteste Idee, für diese Anwendung eine HTA zu
                       verwenden.

                    Wenn Du die resultierende Datei ganz normal als .html oder .htm-Datei abspeicherst und mit dem IE öffnest, bekommst Du hübsche Warnmeldungen angezeigt. Speicherst Du die Datei einfach mit der Endung .hta, dann kannst Du sie einfach per Doppelklick starten und für den Start Deiner Batchdateien musst Du auch nichts mehr bestätigen :-)

                    Freundliche Grüße

                    Vinzenz

  2. Hallo, DieBoxershort!

    Bei jedem Link wo der Haken gesetzt wurde sollte der link ausgeführt werden (nachdem auf eine "Submit-Button" geklickt wurde).

    Wie stellst Du Dir das vor? Wenn Du einen Link "ausführst", wird eine neue Seite geladen, damit ist die Möglichkeit, alle anderen Links "auszuführen", verloren.

    Oder geht es nur darum, dem Server eine Information zu schicken? In diesem Fall kann man sich mit (new Image()).src="/url/" behelfen.

    Gruß, LX

    --
    RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen.