HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - ActiveXObject('Scripting.FileSystemObject') ...

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

ActiveXObject('Scripting.FileSystemObject') ...

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   JavaScript
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
frankpilath
Häufiger Poster


Anmeldungsdatum: 22.03.2005
Beiträge: 21
Wohnort: Düsseldorf

BeitragVerfasst am: 26.03.2005 14:37:12    Titel: ActiveXObject('Scripting.FileSystemObject') ... Antworten mit Zitat

( am 29.03.2005 kompett überarbeitet )

hi zusammen,

habe ein problem mit dem ms-activeXObject - ich möchte auf meiner seite in forms text dateien öffnen und editieren...

dazu verwende ich ein verstecktes "input type=file". ich aktiviere es mit einem button. der open-dialog erscheint. nach auswahl eines datei-namens und bestätigung mit "öffnen" wird durch ein onChange-event des inputs eine function aufgerufen, die den datei-pfad in ein normales textfield schreibt.

mit einem weiteren button rufe ich eine function auf, die das textfield ausliest und die datei mit hilfe des fso öffnet. der inhalt der text-datei wird dann in ein text area übertragen.

nun zum problem:
ist der pfad der gewünschten text-datei einmal in das textfield geschrieben, über das "input type=file", von hand oder durch einfügen aus der zwischen-ablage, dann kommt es manchmal zu der fehler-meldung:
Code:
"Automatisierungsserver kann Objekt nicht erstellen"

mit bezug auf die zeile meines codes:
Code:
var fso = new ActiveXObject('Scripting.FileSystemObject');

(also der definition des fso)

verwundern tut mich:
das passiert nur beim aufrufen der "datei-öffnen-function" (die auch die o.g. zeile zur definition des fso beinhaltet) mit der return-taste - rufe ich die selbe function mit einem optionalen button auf, funktioniert alles ohne error.

das onKeyDown-event des o.g. textfields (zur eingabe des datei-pfads) setze ich nach aufruf der "datei-öffnen-function" bereits mit "return false" zurück - was mache ich falsch ?

es kommt noch besser:
habe ich einmal die "datei-öffnen-function" mit dem optionalen button geöffnet und wurde die datei korrekt geladen, dann kann ich danach auch mit der return-taste die function ohne error aufrufen...??!!

habe aus der not heraus eine globale variable definiert, die erst true gesetzt wird, wenn einmal eine datei geladen wurde. somit muss man zuerst über den button eine datei laden und kann danach per hand eingeben, den pfad verändern und mit der return-taste bestätigen - ohne dass der fehler auftritt - aber dies kann ja wohl nur eine not-lösung sein...

hilfreiche ideen wären schön! - gibt doch sicherlich elegantere wege text-dateien zu öffnen oder ? Smile

mfg, frank


Zuletzt bearbeitet von frankpilath am 29.03.2005 15:59:48, insgesamt 10-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
admin
Site Admin


Anmeldungsdatum: 16.01.2005
Beiträge: 323
Wohnort: Berlin

BeitragVerfasst am: 26.03.2005 20:29:08    Titel: Antworten mit Zitat

zeig mal den (relevanten teil des) code.

gruss,
jan.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
frankpilath
Häufiger Poster


Anmeldungsdatum: 22.03.2005
Beiträge: 21
Wohnort: Düsseldorf

BeitragVerfasst am: 26.03.2005 21:15:21    Titel: Antworten mit Zitat

( am 29.03.2005 kompett überarbeitet )

ich versuche es mal (auf das wesentliche reduziert) :

//-- function datei-pfad auslesen --//
Code:
function getPathFromInput(){
  textfieldObj.value = inputFileObj.value;
}

//-- event des input type=file --//
Code:
inputObj.onChange = functionGetPathFromInput;


//-- function event handler des textfields --//
Code:
function handleReturns(){
  if(window.event.keyCode == 13){ showText(); return false; }
}

//-- event des textfields --//
Code:
textfieldObj.onKeyDown = handleReturns;


//-- function text-datei anzeigen --//
Code:
function showText(){
  var pathStrg = textfieldObj.value;
  textAreaObj.value = openTextFile(pathStrg);
}


//-- function text-datei öffnen --//
Code:
function openTextFile(pathStrg){
  // error bezieht sich auf die folgende zeile !
  var fso = new ActiveXObject('Scripting.FileSystemObject');
  var filObj, filTxt = '';
  var doRead = 1;
  var doCreate = true;

  filObj = fso.OpenTextFile(pathStrg, doRead, doCreate);
  filTxt = filObj.ReadAll();
  filObj.Close();

  return filTxt;
}


nach einem datei-öffnen mittels button, der die function "showText()" aufruft, kann ich danach beliebig den datei-pfad im textfield ändern und mit der return-taste andere dateien laden - nur eben nicht beim ersten mal - idee ? (alternative ?).

mgf, frank

p.s.: schöne ostern, nebenbei Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frankpilath
Häufiger Poster


Anmeldungsdatum: 22.03.2005
Beiträge: 21
Wohnort: Düsseldorf

BeitragVerfasst am: 30.05.2005 16:06:02    Titel: Antworten mit Zitat

hallo forum,

ich habe wie ich glaube selbst eine erklärung für das problem gefunden, die ich hier anderen leidens-genossen kurz mitteilen möchte :

es scheint tatsächlich so zu sein, dass sich das activeX-object nicht durch ein "key-event" oder ein vergleichbares ereignis initialisieren lässt, um auf das datei-system zuzugreifen. wohl aus sicherheits-gründen.

es badarf wohl eines "mouse-events", da man dann wohl davon ausgeht, dass der user einen button angeklickt hat und somit weis was er tut. obgleich ich nicht den button des original-steuerelements (input=file) anklicke, sondern es über ein img.onmousedown = eventHandler -> inputFileObject.click() anspreche, ist dies microsoft wohl sicher genug, um das activeX-steuerelement zuzulassen.
ich habe viele variationen durchprobiert und keine bessere erklärung gefunden.

die lösung bleibt somit für mich, dass beim verwenden meiner "online tools" zuerst mit einem click auf einen button das activeX-object initialisiert wird. dananch erscheint die bekannte frage, ob man das denn auch wirklich zulassen möchte. hat man diese vertrauensvoll mit "ja, ich will..." beantwortet, dann kann man ungehindert datei-operationen durch beliebige events auslösen.

hoffe, es verkürzt den leidensweg des einen oder anderen forum-besuchers Smile

gruß, frank
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   JavaScript
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.