Avatar billede Slettet bruger
18. marts 2004 - 15:48 Der er 18 kommentarer og
1 løsning

trim dokument

Hej,

Jeg har et html dokument hvis indhold jeg vil trimme. Det skal forstås som at jeg gerne vil ha' fjernet alle tabuleringer og linebreaks etc. i dokumentet for at få det til at fylde mindre. Nogen der ved hvordan?
Avatar billede doggy82 Praktikant
18. marts 2004 - 17:54 #1
Du kan bruge http://www.silveragesoftware.com/hffr.html Bruger jeg ofte, det er ret smart.
Avatar billede Slettet bruger
18. marts 2004 - 19:08 #2
Hmm hvordan sætter jeg det op?

Find what: \rn\r\n\t
Replace with:

giver intet resultat...
Avatar billede doggy82 Praktikant
18. marts 2004 - 19:42 #3
hmm prøv at kig i hjælpe filen. Det virker fint for mig.
Avatar billede olebole Juniormester
19. marts 2004 - 00:46 #4
<ole>

Du kan bare skrive den selv:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
</head>
<body>

<iframe src="about:blank" name="loadFR"></iframe>

<script type="text/JavaScript">
var url = "blablabla.html"; // Originalt doc
var newUrl = "blablabla.html"; // Komprimeret doc

var oHTTP = new ActiveXObject( "MSXML2.XMLHTTP" );
oHTTP.Open( "GET", url, false );
oHTTP.onreadystatechange = function() {
    if (oHTTP.readyState==4) {
        var t = oHTTP.responseText.replace(/[\n\r]*/gi, "");
        document.frames["loadFR"].document.open("text/html", "replace");
        document.frames["loadFR"].document.write(t);
        document.frames["loadFR"].document.close();
        document.frames["loadFR"].document.execCommand( "SaveAs", null, newUrl );
    }
}
oHTTP.send();
</script>

</body>
</html>

/mvh
</bole>
Avatar billede olebole Juniormester
19. marts 2004 - 00:47 #5
Hvis ikke, du vil overskrive det originale dokument, skriver du naturligvis et andet navn:
  var newUrl = "ny_blablabla.html"; // Komprimeret doc
Avatar billede olebole Juniormester
19. marts 2004 - 00:51 #6
Vil du også fjerne tabuleringer, ser replace'en sådan ud:
  var t = oHTTP.responseText.replace(/[\n\r\t]*/gi, "");
Avatar billede olebole Juniormester
19. marts 2004 - 00:55 #7
Hvis du har JavaScript i dokumentet, vil en linie som denne naturligvis lide:
  alert("Her er en besked.\nGider du virkelig læse den?")

Du skal endvidere _altid_ afslutte dine funktioner med et semikolon ... efter slut-klammen på funktionen.
Avatar billede Slettet bruger
19. marts 2004 - 16:44 #8
ole > Det virker, men den ødelægger æ,ø,å
Avatar billede Slettet bruger
19. marts 2004 - 18:15 #9
hov ikke bare æ,ø,å men også det der kommer efter 

årrække bliver f.eks. til ??e
været bliver til v?t
Avatar billede olebole Juniormester
19. marts 2004 - 19:17 #10
årrhh ja ... JavaScript kan generelt ikke håndtere special-tegn, som f.eks. 'æ', 'ø' og 'å'. De skal konvereteres til den escapede oktal-værdi af tegnets keyCode:
  alert( "\345l, \370l og r\370r\346g" );
Jeg prøver at kikke på det lidt senere  ;o)
/mvh
Avatar billede Slettet bruger
20. marts 2004 - 15:11 #11
Det lyder godt :)
Avatar billede olebole Juniormester
20. marts 2004 - 18:16 #12
Hej igen ezolu ... jeg prøvede at skrive et nyt eksempel til dig igår aftes, men Admin har åbenbart fået en ny hobby: At 'opdatere' Eksperten hver aften/nat, så hele indlægget forsvinder ud i den blå luft, når der trykkes 'Send' - og man bliver samtidig logget af. Hvis så bare det hjalp på sitet og dets kode ... ak ja  :)
Anyways ... her er vi så igen:

Problemet med eksemplet ovenfor, tror jeg ligger encoding. XML-komponenten, der henter strengen fra filen, forudsætter, der tale om UTF-8 - mens kommandoen, der gemmer den nye fil, gemmer i ANSI.

Jeg har ikke haft så meget tid til at 'pille' i det, men her kommer et andet script, der kan gøre, hvad du ønsker - uden at fucke up.
Til gengæld får du en sikkerheds-alert, om at et potentielt farligt ActiveX-objekt er ved at loade. Hvis du bruger Norton Antivirus får du sikkert også en alert derfra - men her har du mulighed for at 'lære' Norton at godkende netop dette script nu og i fremtiden (det gøres i en dropdown i popup'en).
Selvfølgelig er det da rarest at undgå den slags, men til dit brug betyder det nok ikke så meget ... det er værre, hvis der er tale om software, der skal distribueres  :)
Du kan roligt acceptere scriptet, når disse alerts kommer. Scriptet er sikkert - og du ønsker det jo selv afviklet - men det ved din browser og Norton ikke  ;o)

<script type="text/JavaScript">
var url = "c:/blablabla.html"; // Originalt doc
var newUrl = "c:/ny_blablabla.html"; // Komprimeret doc

var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile( url, 1 );
var s = f.ReadAll();
s = s.replace(/[\n\r\t]*/gi, "");

var nf = fso.CreateTextFile( newUrl, true );
nf.Write(s);
nf.Close();
</script>

Håber, du kan bruge det - selvom jeg gerne ville have givet dig et script, der kørte 'silent'  :)
/mvh
Avatar billede Slettet bruger
21. marts 2004 - 10:56 #13
Hej Ole,

Det ser godt ud, men det ville være mere end ønskeligt hvis jeg ikke skulle hardcode stien og filnavnet for hver gang?
Avatar billede olebole Juniormester
21. marts 2004 - 19:47 #14
Så lægger du det bare ind i en funktion:

<script type="text/JavaScript">
function myTrim(f) {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var file = fso.OpenTextFile( "c:/" + f.url.value, 1 );
    var s = file.ReadAll();
    s = s.replace(/[\n\r\t]*/gi, "");
   
    var nf = fso.CreateTextFile( "c:/" + f.newUrl.value, true );
    nf.Write(s);
    nf.Close();
    f.url.value = f.newUrl.value = "";
    return false;
}
</script>

<form onsubmit="return myTrim(this)">
Fil: <input type="text" name="url"><br>
Ny fil: <input type="text" name="newUrl"><br>
<button type="submit">Trim</button>
</form>
Avatar billede olebole Juniormester
21. marts 2004 - 19:53 #15
Nu er stien hard-coded ind i scriptet - men det kan du jo blot lave om. Det er dog lettere at lave en mappe, hvor man trimmer dokumenter ét sted på HD'en ... i stedet for at skulle sidde og skrive lange stier hvergang.

Den kan naturligvis også udvides til en fuld applikation, hvor du har open- og save-dialoger, undgår ActiveX-alerts, m.m. - men så er vi vist ovre i en hel anden boldgade, hvor vi taler om en betalt opgave  :)
/mvh
Avatar billede Slettet bruger
21. marts 2004 - 19:55 #16
hmm, istedet for at skulle skrive stien i to felter, kunne man så ikke lave funktionen så den nye fil altid fik det samme navn som den gamle + mellemrum trimmed ?
Avatar billede olebole Juniormester
21. marts 2004 - 20:55 #17
Mellemrum i filnavne er altid en skidt idé. Du kunne f.eks. skrive:

<script type="text/JavaScript">
function myTrim(f) {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var file = fso.OpenTextFile( "c:/" + f.url.value, 1 );
    var s = file.ReadAll();
    s = s.replace(/[\n\r\t]*/gi, "");
   
    var nf = fso.CreateTextFile( "c:/trimmed_" + f.url.value, true );
    nf.Write(s);
    nf.Close();
    f.url.value = "";
    return false;
}
</script>

<form onsubmit="return myTrim(this)">
Fil: <input type="text" name="url"><br>
<button type="submit">Trim</button>
</form>
Avatar billede Slettet bruger
14. september 2004 - 18:41 #18
Hvis du lægger et svar ole, så er der lukket
Avatar billede olebole Juniormester
14. september 2004 - 19:08 #19
Yups
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester