Link nur mit ausgewählter Checkbox ausführen
DieBoxershort
- javascript
0 Gunnar Bittersmann0 LX
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
@@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'
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?
@@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'
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?
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
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
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:
Freundliche Grüße
Vinzenz
danke bin jetzt weitergekommen
MFG
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
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
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