Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

JavaScript Search-engine frame problemen

Anoniem
rjpm
6 antwoorden
  • Van een site heb ik een standaard voorbeeld van een javascript search engine gedownload. Deze werkt redelijk simpel, maar de resultaten worden standaard in een nieuw venster geopend. De bedoeling is echter dat die in mijn rechterframe (content) geopend worden. Ik heb al in het forum gezocht, maar ik weet te weinig van javascript om deze code om te bouwen.

    Wie kan me helpen?

    Groeten,
    rjpm

    De code staat hieronder:

    win = window.open();
    win.document.write(page);
    txt = frm.srchval.value.split(" ");
    fnd = new Array(); total=0;
    for (i = 0; i < item.length; i++) {
    fnd = 0; order = new Array(0, 4, 2, 3);
    for (j = 0; j < order.length; j++)
    for (k = 0; k < txt.length; k++)
    if (item[order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
    fnd += (j+1);
    }
    for (i = 0; i < fnd.length; i++) {
    n = 0; w = -1;
    for (j = 0;j < fnd.length; j++)
    if (fnd[j] > n) { n = fnd[j]; w = j; };
    if (w > -1) total += show(w, win, n);
    fnd[w] = 0;
    }
    win.document.write("</table><br>Totaal gevonden : "+total+"<br></body></html>");
    win.document.close();
    }
    function show(which,wind,num) {
    link = item[which][1] + item[which][0];
    line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> &&Score: "+num+"<br>";
    line += item[which][4] + "<br>"+link+"</td></tr>";
    wind.document.write(line);
    return 1;
    }
  • Volgens mij vergeet je een stukje. Dit ziet er namelijk niet uit als een volledig stuk code.

    Ik heb de code niet goed bekeken, maar zo op het eerste gezicht lijkt het mij voldoende om de referentie naar het window object te wijzigen. Hiervoor wijzig je de eerste regel uit de code die je hierboven plaatst in:

    [code:1:307b772476]
    win = parent.frames["ZetHierDeNaamVanJeFrame"];
    [/code:1:307b772476]
  • Annie,

    bedankt voor je snelle reactie. Je hebt gelijk dat ik niet de hele code heb geplaatst. Ik heb je aanwezingen opgevolgd, maar dan krijg ik een foutmelding (page is undefined). Voor de zekerheid heb ik hieronder de hele code gezet. Ik hoop dat je me nog een keer kunt helpen!

    Groet,
    rjpm




    <!– Begin
    var item = new Array();

    /* Breng hieronder de wijzigingen aan met betrekking tot je eigen website.
    Je vult in :

    De naam van je pagina
    De map waarin deze pagina staat, als het in een aparte map staat (dit moet eindigen met /). Staat deze pagina niet in een aparte map, zet er dan niets neer.
    Titel van de pagina
    Trefwoorden over jouw pagina. Je scheidt ze met een komma
    Een toelichting
    */
    // "Frontpage cursus","pad","paginatitel","tref,woor,den","commentaar"

    c=0; item[c]=new Array("test.htm","","pagina1","keywords","testpagina");
    c=++; item[c]=new Array("test.htm","","pagina2","keywords","testpagina");
    c=++; item[c]=new Array("test.htm","","pagina3","keywords","testpagina");
    c=++; item[c]=new Array("test.htm","","pagina4","keywords","testpagina");
    c=++; item[c]=new Array("test.htm","","pagina5","keywords","testpagina");
    c=++; item[c]=new Array("test.htm","","pagina6","keywords","testpagina");
    c=++; item[c]=new Array("test.htm","","pagina7","keywords","testpagina");

    /* Hier geef je de eigenschappen van de pagina met daarop de zoekresultaten aan */

    page="<html><head><title>Zoekresultaten</title><link rel=stylesheet href=mijnstylesheet.css></head><body bgcolor='white'><p>Zoekresultaten</p><p align=center>De links openen in dit venster. Je kunt het vorige venster sluiten.</p><center><table border=0 cellspacing=10 width=80%>";


    /* Nu komt er een heel stuk code. Hier snap je waarschijnlijk niets van, maar dat is ook niet nodig. */


    function search(frm) {

    win = window.open("","","titlebar=yes,location=yes,scrollbars=yes,resizable=yes,toolbar=yes,statusbar=yes,menubar=yes");
    win.document.write(page);
    txt = frm.srchval.value.split(" ");
    fnd = new Array(); total=0;
    for (i = 0; i < item.length; i++) {
    fnd = 0; order = new Array(0, 4, 2, 3);
    for (j = 0; j < order.length; j++)
    for (k = 0; k < txt.length; k++)
    if (item[order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != "")
    fnd += (j+1);
    }
    for (i = 0; i < fnd.length; i++) {
    n = 0; w = -1;
    for (j = 0;j < fnd.length; j++)
    if (fnd[j] > n) { n = fnd[j]; w = j; };
    if (w > -1) total += show(w, win, n);
    fnd[w] = 0;
    }
    win.document.write("</table><br>Totaal gevonden : "+total+"<br></body></html>");
    win.document.close();
    }
    function show(which,wind,num) {
    link = item[which][1] + item[which][0];
    line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> &&Score;: "+num+"<br>";
    line += item[which][4] + "<br>"+link+"</td></tr>";
    wind.document.write(line);
    return 1;
    }
    // End –>
  • De foutmelding wordt waarschijnlijk veroorzaakt doordat er al eerder in je script een aantal fouten zitten. De variabele [i:8ed47458f3]page[/i:8ed47458f3] is namelijk gewoon gedeclareerd (globaal) en zou daarom gewoon beschikbaar moeten zijn.

    Onderstaande is geen geldige javascript code:
    [code:1:8ed47458f3]c=++;[/code:1:8ed47458f3]

    Wijzig dit maar eens in:
    [code:1:8ed47458f3]c++;[/code:1:8ed47458f3]
  • Annie,

    Dit stond inderdaad fout. Ik heb het gewijzigd, maar het wordt nog steeds in een nieuw venster geopend. Weet je misschien hoe ik dit dan aan moet pakken?

    groet,
    rjpm
  • Kan je iets online zetten? Dan kan ik (of iemand anders) even meekijken in de broncode.
    Ik heb zo het idee dat ik telkens met halve informatie aan het werken ben waardoor het een beetje glazen bol kijken is.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.