hallo!
vielleicht kann mir ja jemand weiterhelfen, ich möchte mit vb.net 2005 (express edition) ein Tool erstellen mit dem ich den value Wert einer Input Box vorbelegen kann. Gegeben ist folgender Code:
tmp = WebBrowser1.Document.Forms(0).InnerHtml
File:
Es soll nun im _file Input_ ein weiter Wert
value=
ergänzt werden. Direkt das
tmp.InnerHtml
ändern funktioniert wohl wegen der Table Tags überhaupt nicht. Also Funktionen wie
tmp.Replace()
oder
tmp.Insert()
haben einfach keine Wirkung (oder ich mache etwas falsch?)
Wenn ich jedoch den Wert von
tmp.InnerText
ändere wird dieser übernommen und auch in das
tmp.InnerHTML
Feld geschrieben. Leider werden dabei alle Sonderzeichen in HTML Special Chars umgewandelt!
Aus
wird dann
& l t ;TBODY & g t ;
(hier mit Leerzeichen, da es auch mit code-tag hier wieder zu umgewandelt wird)
was im Browser nicht dargestellt wird. Hat jemand eine Idee wie man das Lösen könnte?
Danke für Tips!
Du willst unter .net eine Webseite verändern. Dabei gibt es zwei mir bekannte Varianten:
Du erstellt unter .net eine apsx Seite, die VB als „Source behind“ verwendet. Dann würde ich auch eine asp:TextBox einsetzen, die dann direkt per VBA behandet werden kann:
test
Und in c# (VB dürfte recht ähnlich ausfallen)
testTextbox.Text=„mein text“;
Oder du möchtest in der html Seite per Script (VB?) etwas ändern.
Dann könnte etwas wie:
window.document.getElementById(‚file‘).innerText = ‚noch en text‘;
ich würde eher sagen, ich will sie ‚fernbedienen‘ da sie nicht meine ist kann ich sie nicht verändern.
Also das Quellpfad eingeben in die Dateiauswahl (was mein aktuelles Problem darstellt, da ich den Pfad nicht so in das InnerHtml geschrieben bekomme, dass es vom Browser korrekt interpretiert wird) und den Upload Starten Button drücken will ich damit simulieren/automatisieren.
Ich nehme an, ich muss über z.B. die GetElementById Methode in Kombination mit vielleicht einem setAttribute o.ä. etwas zusammenstellen. Aber ich komme einfach noch nicht mit den Eigenheiten des innerHTML klar, da dieses den zugewiesenen Code immer irgendwie uminterpretiert (z.B. wenn ich versuche .innerHTML = „“ zuzuweisen werden die eckigen Klammern samt Inhalt komplett ignoriert).
ich würde eher sagen, ich will sie ‚fernbedienen‘ da sie nicht
meine ist kann ich sie nicht verändern.
Fernbedienen scheidet sicher aus, die Seite liegt „dann“ entweder noch auf dem Server oder beim Client vor und kann (wenn das überhaupt geht) nur dort verändert werden.
Was du möchtest klingt eher nach: „Ich hol mir den HTML Code einer Seite, ändere den und schreibe die Seite an einen Ort meiner Wahl“.
Abgesehen davon, dass man da ja auf dumme Gedanken kommen kann (Phishing ist da wohl das Stichwort): Was soll das werden? Üblicherweise schreibt jemand eine Seite und stellt die zur Vefügung, so wie sie ist. Änderungen sollte nur der vornehmen der die Seite hat, was auch einen guten Grund hat.
Ohne das Ziel und die (halbwegs) genauen Umstände (Intranet?) zu kennen, kann dir wohl keiner helfen, was man auch an der Menge der Antworten ablesen kann…
Fernbedienen scheidet sicher aus, die Seite liegt „dann“ […] beim Client vor und kann […] nur dort verändert werden.
so ‚ungefähr‘ sollte es sein, nur das ich sie Dank vb.net nicht erst neu schreiben muss sondern direkt auf die HTML Objekte in meinem WebBrowser1 Steuerelement zugreifen kann.
Abgesehen davon, dass man da ja auf dumme Gedanken kommen kann
(Phishing ist da wohl das Stichwort): Was soll das werden?
kein Phishing, das Ergebnis soll nur mir ‚lokal‘ als Upload Hilfe für Bilder Uploads (daher die vorbelegung der INPUT - Upload Box mit einer Datei) dienen. Ähnliches gibt es ja schon von vielen Anbietern als extra Tools (z.B. bei yahoo Fotos das „Easy Upload Tool“. Also um das umständliche auswählen jeder einzelnen Datei zu umgehen.
Wenn das attribut nicht existiert, kann man es auch nicht füllen:
var valueAttr= document.createAttribute("Value");
valueAttr.nodeValue = "c:\....";
var Element = document.getElementsById(meineId);
Element.setAttributeNode(valueAttr);
Wenn das attribut nicht existiert, kann man es auch nicht
füllen:
in vb.net geht es doch, leider nur wenn ein öffnendes und schließendes HTML Tag vorhanden ist wie . Dahinein kann ich mit setElement(„value“, „xyz“) ein einfügen. Jedoch beim funktioniert es so nicht.
Dein Code ist leider etwas verwirrend (d.h. der Versuch es in visual basic nachzubauen), da es bei mir in vb.net kein createAttribute gibt. Erst wenn ich den System.xml Namspace importiere, aber dann kann ich das auch nur auf XmlDocument Datentypen anweden, was ich wiederum nicht in ein HtmlElement einfügen kann… uhihui nun meine freie Zeit ist um, werde vielleicht in 1-2 Wochen etwas weiterprobieren. Danke soweit!