Avatar billede temporally Nybegynder
24. november 2009 - 09:22 Der er 4 kommentarer

Søgefunktion søges til html side

Jeg har lavet en lille html side med nogle hyperlinks ned til nogle lokale mapper på et netværksdrev. I de mapper ligger der en masser forskellige filer jpg, pps, doc osv osv.
Det der er mit problem er at finde en lille søgefunktion til siden, så man kan søge efter dokumenterne fra html siden. Den skal søge i ca 20 forskellige mapper som ligger lokalt på et netværksdrev.
Hvis den finder et dokument som svare til søgningen, skal den bare komme med et direkte link til dokumentet på en ny html side, som så popper op hvis den finder noget.

Grunden til måden det er lavet på er så oldnordisk, er at det køre på et stort netværk i en større dansk virksomhed og det skal kun bruges internt til at holde styr på nogle kedelige dokumenter..Vi kunne sagtens købe en masse dyre løsninger, men vi skal bare have noget enkelt som alle kan finde ud af bruge.
Og alle kan kopiere filer ned i nogle lokale mapper.

Håber i kan hjælpe med et lille script som ikke behøver og køre på en webserver.
Avatar billede FrederikBache Nybegynder
24. november 2009 - 20:56 #1
Hvis alle dokumenternes navne allerede er vist på siden, kan man vel i princippet bare bruge browserens indbyggede søgefunktion (tror det er CTRL+F i de fleste browsere). Den vil automatisk søge dokumentet igennem og finde det pågældende element.
Avatar billede temporally Nybegynder
25. november 2009 - 06:31 #2
De er ikke vist på siden men ligger kun i mapperne på det lokale drev.. Man kan selvfølgelig søge via den indbyggede søgefunktion i windows, men jeg ville nu gerne have en integreret funktion på html siden.
Avatar billede FrederikBache Nybegynder
25. november 2009 - 19:25 #3
Nu mente jeg ikke den indbyggede søgefunktion i windows, men i browseren. Hvis du søger i browseren, ryger du ned til det sted hvor teksten står på html siden, ligesom et javascript ville gøre det. Kan forstå på dig du helst vil have en søgefunktion som er synlig på siden. Hvordan havde du tænkt dig den skulle virke. Skal man ryge ned til det pågældende link?
Avatar billede tjens Nybegynder
27. november 2009 - 17:47 #4
Her er et javascript, der gennemsøger en folder og viser fundne filer:

<?xml version="1.0" encoding="UTF-8"?>
<html  xmlns="http://www.w3.org/1999/xhtml">
<hta:application id="oHTA"  applicationname="MyHTA">
<head>
<title>File Search</title>
<style type="text/css">
    body                    {background-color: white; font-family : sans-serif;}
</style>
<script  language="javascript">

var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var CANCEL;
var searchWord;
var subDirArray = [];
var count;
var fcount;
var found;
var ResultTable;

function StartSearch() {
    ResultTable=document.getElementById("resultTable");
    while ( ResultTable.hasChildNodes() ) ResultTable.removeChild(ResultTable.lastChild);
    CANCEL = false;
    document.getElementById("startButton").disabled = true;
    document.body.style.cursor = "wait";
    searchWord = document.frmSearch.name.value;
    subDirArray = [];
    subDirArray[0] = document.frmSearch.folder.value;
    count = 0;
    fcount = 0;
    found = 0;
    SearchFolder();
}

function  SearchFolder() {
        if (count == subDirArray.length ||  CANCEL) {
                document.getElementById("statusDiv").firstChild.nodeValue = ' ' + found + ' files found. ' + fcount + ' files searched in ' + count + ' directories.';
                document.getElementById("startButton").disabled = false;
                document.body.style.cursor = "";
                return;
        }
       
        document.getElementById("statusDiv").firstChild.nodeValue = subDirArray[count];
        var objDir = oFSO.GetFolder(subDirArray[count]);
        aFolders = new Enumerator(objDir.SubFolders);
        for (var i=0;!aFolders.atEnd();aFolders.moveNext()) {
                subDirArray[ subDirArray.length ] = aFolders.item().Path;
        }

        aFiles = new Enumerator(objDir.Files);
        for (var i=0;!aFiles.atEnd();aFiles.moveNext()) {
            SearchFile( aFiles.item() );
        }
        count++;
        setTimeout( 'SearchFolder()', 1 );
}

function SearchFile( file ) {
    fcount++;
   
    if  (file.Name.indexOf( searchWord )  > -1 ) {
        found++;
        var link = document.createElement("a");
        var row = document.createElement("tr");
        var cell1 = document.createElement("td");
        var cell2 = document.createElement("td");
        link.href = file.Path;
        link.appendChild( document.createTextNode( file.Name + ' ') );
        cell1.appendChild( link );
        cell2.appendChild( document.createTextNode( ' ' + file.ParentFolder.Path) );
        row.appendChild( cell1 );
        row.appendChild( cell2);
        document.getElementById( "resultTable" ).appendChild( row );
    }
}
</script>
</head>
<body>
    <form name="frmSearch">
        Search:
        <input type="text" name="name" value=".jar" size="10" title="Search text" >
        <input type="text" name="folder" value="C:\Program Files\Java" size="99" title="Folder to search" >
        <input type="button" id="startButton" value="Search Folder" onclick="StartSearch();">
        <input type="button" value="Cancel" onclick="CANCEL=true;">
    </form>
    <div id="statusDiv">..</div>
    <p>
        <table border="0">
            <thead><tr><th>File</th><th>Folder</th></tr></thead>
            <tbody  id="resultTable"></tbody>
        </table>
           
    </p>
</body>
</html>

Gem det i en tekstfil, og rename den til .HTA som endelse.

PS: den er ikke gennemtestet og kan sikkert forfines yderligere.

Hvis du gerne vil søge mange foldere kan de lægges i variabel subDirArray i funktion StartSearch().
Håber det kan bruges ;-)
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