[JavaScript] .txt bestand uitlezen

Pagina: 1
Acties:
  • 783 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Medetweakers

Ik zit met het volgende probleem.
In opdracht voor school maken wij een promotiecdrom. Die ze kennen uitdelen met open dagen en dergelijke.

Alleen 1 van de eisen is dat het managble is. Nu gaat dat op een cdrom vrij lastig. :)

wat we nu hebben gedaan is een pc met iis draaien en daar met asp een beheer pagina gemaakt die de info die op de cdrom moet komen in txt bestanden wegschrijft/wijzigt. Dit komt in een mapje cdrom die word gefikt en klaar.

Deze txt bestanden wou ik dan met behulp van een javascript of andere oplossing mag ook :) vanuit de html pagina inladen.
(hoopelijk is deze omschrijving duidelijk)

Allen heb ik dit iets onderschat want ik dacht dat dit vrij makkelijk te doen was totdat ik leerde dat dit in princiepe niet kan vanwege beveiliging. Maar dat er wel workarounds zijn.
Vanuit een oud topic hier op tweakers (ben ik ff kwijt) kwam ik op:
http://samuel.trygger.nu/...ascript/UDC/c_filereader/

deze heb ik gedownload maar ik krijg hem niet aan de praat.

Heb op het moment dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<body>
<script language="javascript"
        type="text/javascript"
        src="UDC.c_filereader.js">
</script>

<script language="javascript" type="text/javascript">
var myFilereader = new c_filereader();
    myFilereader.documentBase ='C:\test;
var d = myFilereader.readFile('text.txt');
</script>

<script language="javascript" type="text/javascript">
document.write(d);
</script>

aleen als ik dan de pagina open krijg ik alleen Undifined te zien.

Als ik dingen probeer verandert dat in verschillende soorten syntax errors :X
Denk dat dit komt omdat ik nog maar 2 dagen met JS bezig ben. :Y)

[ Voor 6% gewijzigd door Verwijderd op 03-12-2003 16:23 ]


Acties:
  • 0 Henk 'm!

  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 29-08 07:42
Als iets niet werkt dat je van een site gehaald hebt, moet je de maker mailen ;).

Maar an sich kan je geen .txt's uitlezen met JavaScript, wat je ook probeert. Je zal dus een .js file moeten gebruiken, waarin je variabelen declareert die je daarna uitleest voor wat je er ook mee moge doen :).

Het werkt zo te zien wel, maar als je het niet aan de praat krijgt op deze manier, ga dan gewoon voor .js'jes :).

[ Voor 34% gewijzigd door coubertin119 op 03-12-2003 16:03 ]

Skat! Skat! Skat!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
coubertin119 schreef op 03 december 2003 @ 16:01:
Als iets niet werkt dat je van een site gehaald hebt, moet je de maker mailen ;).

Maar an sich kan je geen .txt's uitlezen met JavaScript, wat je ook probeert. Je zal dus een .js file moeten gebruiken, waarin je variabelen declareert die je daarna uitleest voor wat je er ook mee moge doen :).

Het werkt zo te zien wel, maar als je het niet aan de praat krijgt op deze manier, ga dan gewoon voor .js'jes :).
hmm dat zal wel kunnen maar dan moet ik als ik met asp iets wegschrijf naar een tekstbestand de variable moeten meegeven zal is proberen of dat lukt hoop eigenlijk nog een beetje op een ander oplossing :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zie dat 't ding een Microsoft.XMLHTTP object gebruikt. Is dat geïnstalleerd? Zo nee, download dan Microsoft XML Core Services 4.0 Service Pack 2 ofzo.

Je clients zullen dus ook het XMLHTTP object geïnstalleerd moeten hebben, nu is dat vanaf WinXP (correct me if i'm wrong) en IE5 en hoger standaard aanwezig, maar toch...

Het XMLHTTP object wordt in dit geval dus gebruikt om de externe file te downloaden...

[ Voor 12% gewijzigd door RobIII op 03-12-2003 16:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Zodra het eenmaal op CD moet, heeft het geen zin meer om dynamisch je pagina's te genereren. Als wij een CD-ROM met bijvoorbeeld een website erop moeten leveren, dan is het een kwestie van allemaal losse HTML bestanden genereren, en die op de CD zetten. Meestal heb je toch enorm veel ruimte over op zo'n CD, dus een paar kB meer of minder maakt dan niet zoveel uit.

Laat die ASP beheerpagina dus een snapshot van de totale 'site' genereren op het moment dat iemand daar om vraagt. Ik zie het voordeel of de noodzaak van Javascript niet echt, in dit geval.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op 03 december 2003 @ 16:08:
Ik zie dat 't ding een Microsoft.XMLHTTP object gebruikt. Is dat geïnstalleerd? Zo nee, download dan Microsoft XML Core Services 4.0 Service Pack 2 ofzo.

Je clients zullen dus ook het XML object geïnstalleerd moeten hebben, nu is dat vanaf WinXP (correct me if i'm wrong) en IE5 en hoger standaard aanwezig, maar toch...
aii :'(

Als het daar aan licht kan ik dit zowieso dan niet gebruiken omdat ik het liefst heb dat die mensen die die cdrom ontvangen niks hoeven te installeren.

Het licht voor de rest dus niet aan mijn stukje code?
Ik ga dit testen als het dus nu wel werkt moet ik dus andere benadering zoeken.

Edit: reply op Cheatah

Ik wou dit met JS doen zodat ik via die beheer pagina dan alleen de txt files hoef te bewerken. Dit leek mij makkelijker te maken ipv met asp tussen de code in die tekst moet laten toevoegen.

Of begrijp ik je verkeerd?

[ Voor 15% gewijzigd door Verwijderd op 03-12-2003 16:15 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik weet niet of het aan je js ligt, daar ben je niet duidelijk genoeg over...
Maar los daarvan, en dat had ik zelf ook al in gedachten, zou ik gaan voor Cheatah's suggestie...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • KneoK
  • Registratie: December 2001
  • Laatst online: 17:14

KneoK

Not in a million lightyears

Verwijderd schreef op 03 december 2003 @ 16:11:
[...]


aii :'(

Als het daar aan licht kan ik dit zowieso dan niet gebruiken omdat ik het liefst heb dat die mensen die die cdrom ontvangen niks hoeven te installeren.

Het licht voor de rest dus niet aan mijn stukje code?
Ik ga dit testen als het dus nu wel werkt moet ik dus andere benadering zoeken.

Edit: reply op Cheatah

Ik wou dit met JS doen zodat ik via die beheer pagina dan alleen de txt files hoef te bewerken. Dit leek mij makkelijker te maken ipv met asp tussen de code in die tekst moet laten toevoegen.

Of begrijp ik je verkeerd?
Gewone .js bestanden kun je includen in je pagina. Als je dus geen tekstbestand laat genereren, maar een bestand met extensie .js kun je alles wat daar in staat gewoon oproepen.
Dit is bijvoorbeeld wat er in een tekstbestand staat:
code:
1
Welkom op mijn CD-ROM

Als je dit nu in een variabele gooit en in een .js bestandje stopt kun je dus dit .js bestandje includen in je hoofdpagina en de variabele oproepen wanneer je wilt.

In plaats van dat je een tekstbestandje met bovenstaande inhoud genereert, genereer je gewoon een .js bestand met bijvoorbeeld het volgende erin:
code:
1
2
3
<script language=javascript>
var myInfoVar = "Welkom op mijn CD-ROM"
</script>

Dit bestandje noem je bijvoorbeeld WELKOM.JS

Dan stop je dit in je hoofdpagina:
code:
1
2
3
4
<script language="javascript"
        type="text/javascript"
        src="WELKOM.JS">
</script>

Nu kun je in de hoofdpagina gewoon de variabele myInfoVar oproepen en de inhoud (Welkom...) afbeelden.

[ Voor 15% gewijzigd door KneoK op 03-12-2003 16:35 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BioWEB

Dan bedoel je volges mij hetzelfde als coubertin119 zei.

Ik denk dat ik dat doe je zal vast wel mogelijk zijn om met asp als hij de tekst wegschrijft naar bestand om er ervoor -> var text = " en erachter -> "; automatisch te laten zetten.

In ieder geval bedankt voor jullie hulp ga ik nu lekker verder prutsen _/-\o_

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Nu online
Verwijderd schreef op 03 december 2003 @ 16:39:Ik denk dat ik dat doe je zal vast wel mogelijk zijn om met asp als hij de tekst wegschrijft naar bestand om er ervoor -> var text = " en erachter -> "; automatisch te laten zetten.
Als je de ASP code zo mooi op hebt gebouwd dat je via bijvoorbeeld een object de output regelt zal het waarschijnlijk heel eenvoudig zijn. Anders is het waarschijnlijk nodig een hoop aantal keren ctrl-c ctrl-v te gebruiken, succes met prutsen! _/-\o_

Acties:
  • 0 Henk 'm!

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Eventueel zou je nog een SWF file kunnen maken die de textfile uitleest, en dan daarna een Javascript functie aanroept met de inhoud van die file als parameter. Werkt sinds versie 4.

"You're only as good, as what you did last week."


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:42

crisp

Devver

Pixelated

check this out:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<html>
<head>
<title>read textfile</title>
<script type="text/javascript">

function read_text() {

  var i = document.getElementById('myobject');

  if (typeof i.contentDocument != 'undefined') {

    alert(i.contentDocument.body.firstChild.firstChild.nodeValue);

  } else {

    alert(i.object.body.firstChild.firstChild.nodeValue);

  }

}

</script>
</head>
<body>
<object id="myobject" data="somefile.txt" type="text/plain"
  style="width:0px;height:0px;visibility:hidden"></object>
<input type="button" value="klikkerdeklik" onclick="read_text()" />
</body>
</html>


zojuist uitgevogeld :)
Het gekke is dat ondanks de text/plain mimetype de browser er toch HTML formatting omheen bakt; desalniettemin lijkt dit zowel in IE als in Mozilla als in Opera gewoon te werken :)

[ Voor 15% gewijzigd door crisp op 03-12-2003 18:40 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 20-08 09:22

Clay

cookie erbij?

dat is wel heel hip! :D _o_

Ben er ff verder mee gaan spelen, want dan zou je toch ook een eigen xml loader moeten kunnen maken ;) maar dan komt je toch wel een paar problemen tegen :( die data constructie met de <object> tag lijkt helaas niet te werken op macIE5 of Safari, en met de type op text/xml werkt xml inladen niet helemaal super; mozilla doet het zo te zien wel goed, en maakt er meteen een xmldom van, maar IE gooit er de interne standaard xsl overheen, en geeft een html document terug :?

'k heb nu dit:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function read_text() {
    var obj = document.getElementById('myobject');
    var doc = obj.contentDocument || obj.object;
    var xml = '';
    
    function parseChilds(node, indent) {
        var child, childs = node.childNodes;
        for(var i=0; i<childs.length; i++) {
            child = childs[i];
            xml += indent + '<' + child.nodeName + '>\n';
            if(child.childNodes.length) {
                parseChilds(child, indent + '  ');
            }
            if(child.nodeValue) { 
                xml += indent + 'value: ' + child.nodeValue + '\n'
            }   xml += indent + '</' + child.nodeName + '>\n';
        }
    }
    parseChilds(doc, '');
    alert(xml);
}


met:

HTML:
1
2
<object id="myobject" data="object.xml" type="text/xml"></object>
<input type="button" value="klikkerdeklik" onclick="read_text()" />


om xml in te lezen zou het dus misschien toch met text/plain in .txt moeten, en dan met een eigen parer om er een bruikbaar object van te bakken, .xml met text/plain inlezen gaat ook niet helemaal lekker namelijk :{ Maar het hele nut is misschien ver te zoeken :) xml inladen kon toch al in IE en Moz. Zo zou je opera erbij halen, maar meer ook niet.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Acties:
  • 0 Henk 'm!

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Clay schreef op 04 december 2003 @ 10:09:
dat is wel heel hip! :D _o_

Ben er ff verder mee gaan spelen, want dan zou je toch ook een eigen xml loader moeten kunnen maken ;) maar dan komt je toch wel een paar problemen tegen :( die data constructie met de <object> tag lijkt helaas niet te werken op macIE5 of Safari, en met de type op text/xml werkt xml inladen niet helemaal super; mozilla doet het zo te zien wel goed, en maakt er meteen een xmldom van, maar IE gooit er de interne standaard xsl overheen, en geeft een html document terug :?
Mac is altijd een beetje een lost case als het op dit soort dingen aankomt. MacIE5 is ongeveer vergelijkbaar met IE4 op Windows en dus niet in staat op met dit soort dingen aan de gang te gaan. Safari is wat ik crippleware noem. Apple beweert dat deze ook met XML kan werken, maar het werkt van geen kanten. Al schijnt de laatste versie (in Panther of wet ik veel hoe die laatste OSX heet) verbeterd te zijn.

Maar wat je zegt, Clay, dit is toch niet echt de manier om documenten in te lezen. Voor dat soort doeleinden zijn al crossbrowser oplossingen gemaakt en het is mijn inziens de taak van de browsermakers die dingen te ondersteunen. Opera en Safari doen dat dus niet.

[ specs ] [ Tweaker gallery ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt ook nog heel lomp met iframes gaan werken die een .txt als source geeft. Via javascript lees je de document.documentElement.innerText uit, en dit moet op zich crossbrowser geen enkel probleem opleveren. De iframes kun je evt. ook nog dynamisch aanmaken.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:42

crisp

Devver

Pixelated

Verwijderd schreef op 06 december 2003 @ 17:20:
Je kunt ook nog heel lomp met iframes gaan werken die een .txt als source geeft. Via javascript lees je de document.documentElement.innerText uit, en dit moet op zich crossbrowser geen enkel probleem opleveren. De iframes kun je evt. ook nog dynamisch aanmaken.
de object tag is eigenlijk de geijkte manier om externe datasources in te laden; ik meen dat in XHTML2 (misschien 1.1 ook al) iFrame al niet meer bestaat, en daarbij is de object tag in principe flexibeler omdat je mimetypes kan opgeven. Jammer dat browsers toch altijd menen de inhoud als HTML te moeten renderen als er geen plugin beschikbaar is om de data op te pakken - dat is namelijk niet de bedoeling.
innerText is trouwens een IE add-on op de DOM en geen standaard.

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

crisp schreef op 06 december 2003 @ 17:38:
[...]

de object tag is eigenlijk de geijkte manier om externe datasources in te laden; ik meen dat in XHTML2 (misschien 1.1 ook al) iFrame al niet meer bestaat, en daarbij is de object tag in principe flexibeler omdat je mimetypes kan opgeven. Jammer dat browsers toch altijd menen de inhoud als HTML te moeten renderen als er geen plugin beschikbaar is om de data op te pakken - dat is namelijk niet de bedoeling.
innerText is trouwens een IE add-on op de DOM en geen standaard.
Daar heb je wel een punt inderdaad. Maar dan nog, in hoeverre wil je nu al rekening gaan houden met xhtml 2. In 1.1 zou je in principe de frameset dtd kunnen gebruiken om volgens de standaard te coden.

Zeker voor een cdrom publicatie heb je geen extra voordelen met het gebruik van bijv. xhtml :)
Pagina: 1