CINXE.COM
woordenlijst.org
<!DOCTYPE html> <html lang="nl"> <head> <title>woordenlijst.org</title> <link rel="icon" type="image/x-icon" href="images/favicon.ico"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="description" content="De officiële spelling van het Nederlands"> <meta name="robots" content="index, follow"> <!--<meta name="viewport" content="width=device-width, initial-scale=1.0">--> <meta property="og:title" content="woordenlijst.org"> <meta property="og:description" content="De officiële spelling van het Nederlands"> <meta property="og:image" content="https://woordenlijst.org/img/Logo_TU_woordenlijst_white_bg_big.png"> <meta property="og:url" content="https://woordenlijst.org/"> <meta property="og:type" content="website"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="woordenlijst.org"> <meta name="twitter:description" content="De officiële spelling van het Nederlands"> <meta name="twitter:image" content="https://woordenlijst.org/img/Logo_TU_woordenlijst_white_bg_big.png"> <!-- https://plausible.io/docs/custom-event-goals --> <script defer data-domain="woordenlijst.org" src="https://statistiek.ivdnt.org/js/plausible.js"></script> <script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script> </head> <body> <!-- get needed CSS and JS libraries --> <link id="theme" rel="stylesheet" href="css/woordenlijst_general.css"> <link id="theme" rel="stylesheet" href="css/woordenlijst_title_logo.css"> <link id="theme" rel="stylesheet" href="css/woordenlijst_menu.css"> <link id="theme" rel="stylesheet" href="css/woordenlijst_query.css"> <link id="theme" rel="stylesheet" href="css/woordenlijst_main_results.css"> <link id="theme" rel="stylesheet" href="css/woordenlijst_footer.css"> <link rel="stylesheet" href="css/jquery-ui.min.css"> <link rel="stylesheet" href="css/jquery-ui.structure.min.css"> <link rel="stylesheet" href="css/jquery-ui.theme.min.css"> <style type="text/css"> @font-face { font-family: schoolboek; font-style: normal; font-weight: normal; src: url(fonts/Schoolboek-Regular.woff) format("opentype"); } </style> <script type="text/javascript" language="javascript" src="./js/jquery.js"></script> <script type="text/javascript" language="javascript" src="./js/jquery-ui.min.js"></script> <script type="text/javascript" language="javascript" src="./js/woordenlijst.labels.js"></script> <script type="text/javascript" language="javascript" src="./js/woordenlijst.utils.js"></script> <script type="text/javascript" language="javascript" src="./js/woordenlijst.results.js"></script> <script type="text/javascript" language="javascript" src="./js/woordenlijst.filters.js"></script> <script type="text/javascript" language="javascript" src="./js/woordenlijst.spellingsuggestions.js"></script> <script type="text/javascript" language="javascript" src="./js/woordenlijst.search.js"></script> <script type="text/javascript" language="javascript" src="./js/spin.js"></script> <div id="holder"> <!-- top of page: logo and such --> <div id="logo_title_menu_bar_div"> <div id='logo'> <a href='/'><img id="tu_logo" src="images/Logo_TU_woordenlijst_white_bg_big.png"></a> </div> <div id="menu"> <table class='menu'> <tr> <td class="active"> <a href='./index.html' id='wrdlst_button' class='menu_item'>Woordenlijst</a> <a href='#' id='leidraad_button' class='menu_item'>Spellingregels</a> </td> <td> <a href='https://taaladvies.net/' target='_blank' class='menu_item'>Taaladvies</a> </td> <td id='meer_weten_div'> <a href='/' id='meer_weten_button' class='menu_item desktop'>Meer weten</a> <a href='/' id='meer_weten_button' class='menu_item mobile'>?</a> </td> </tr> </table> </div> </div> <!-- query part --> <div id="query_bar_div"> <div id="query_div" style='opacity: 0.0'> <div id="query_word_div"> <fieldset> <legend>Zoek een woord</legend> <input type="text" id="query_word_input" autocapitalize="off" autocorrect="off"></input> <button class="ui-button ui-widget ui-corner-all"> <img src="./images/filter_icon.svg" style="height:30px; width: 30px"> </button> </fieldset> </div> <div id="query_pos_div" style='visibility: hidden'> <fieldset> <legend>Kies woordsoort(en)</legend> <label for="AA">Bijvoeglijk naamwoord</label> <input type="checkbox" name="Adjectief" id="AA"> <label for="ADV">Bijwoord</label> <input type="checkbox" name="Bijwoord" id="ADV"> <label for="NUM">Telwoord</label> <input type="checkbox" name="Telwoord" id="NUM"> <label for="INT">Tussenwerpsel</label> <input type="checkbox" name="Tussenwerpsel" id="INT"> <label for="CONJ">Voegwoord</label> <input type="checkbox" name="Voegwoord" id="CONJ"> <label for="PD">Voornaamwoord</label> <input type="checkbox" name="Voornaamwoord" id="PD"> <label for="ADP">Voorzetsel</label> <input type="checkbox" name="Voorzetsel" id="ADP"> <label for="VRB">Werkwoord</label> <input type="checkbox" name="Werkwoord" id="VRB"> <label for="NOU">Zelfstandig naamwoord</label> <input type="checkbox" name="Zelfstandig naamwoord" id="NOU"> <label for="RES">Overig</label> <input type="checkbox" name="Vaste verbinding" id="RES"> </fieldset> </div> </div> </div> <div id="main_div"> <!-- suggestions part --> <div id="suggestions_div"> </div> <!-- results part --> <div id="results_div"> </div> </div> <!-- footer --> <div id="footer_div"> <div id="footer_content"> <div id="footer_logo"> <a href='https://taalunie.org' title='Ga naar taalunie.org' target='_blank'><img id="tu_footer_logo" src="images/Logo_TU_woordenlijst_dark_bg_big.png"></a> <BR> <a href='https://ivdnt.org' title='Ga naar ivdnt.org' target='_blank'><img id="int_footer_logo" src="images/ivdNt-logo-w-2regels-cmyk.png"></a> </div> <div id="footer_text"> <span>© Nederlandse Taalunie, alle rechten voorbehouden.</span><BR> <span>Suggesties of vragen? Stuur een e-mail naar <a href="mailto:info@taalunie.org">info@taalunie.org</a></span><BR> <span>Meer weten over taal? Kijk op <a href="https://taalunie.org/" target="_blank">www.taalunie.org</a> of <a href="https://taaladvies.net/" target="_blank">www.taaladvies.net</a></span><BR> </div> </div> </div> </div> <script type="text/javascript"> // spelling resource var sCurrentUrl = window.location.href; var sCleanUrl = sCurrentUrl.replace(/^(.+)(zoeken.+|woordenlijst\.org.+)$/, "$1"); if (sCleanUrl.indexOf("http")<0) sCleanUrl = 'http://localhost:8080/'; var sSpellingServiceUrl = sCleanUrl + "MolexServe"; var sSpellingResource = "gig_pro_wrdlst"; // globals var sCurrentQuery = null; var sCurrentColorTheme = "default"; // start ! $(document).ready(function() { // URL parameters var params = getHttpParams(); var sQuery_q, sQuery_pos, sQuery_lem_id, sQuery_os, sQuery_leidraad, sQuery_show; if (params != null){ sQuery_q = params["q"]; sQuery_pos = params["pos"]; sQuery_lem_id = params["lem_id"]; sQuery_os = params["os"]; sQuery_leidraad = params["leidraad"]; sQuery_show = params["show"]; } // Reset $("#suggestions_div").empty().hide(); $("#main_div").hide(); // query filter button behaviour (mobile mode only!) $("#query_word_div button").show().click(function(){ // click 'ON' if ( $("#query_pos_div").is(":hidden") ) { // show parts-of-speech panel $("#query_pos_div").show(); // although query word and pos need to be show as column // we need the button to be show to the right of the query word // so, we keep the flex-row property but insert a break in the row // to allow the query pos to appear on the next line. // trick: https://tobiasahlin.com/blog/flexbox-break-to-new-row/ $("<div></div>").addClass("break").insertAfter( $("#query_pos_button_div") ); } // click 'OFF' else { // hide parts-of-speech panel $("#query_pos_div").hide(); // remove the break (see above) $(".break").remove(); } }); // Rework layout upon (end of) resize var updateLayout = function(){ // if filter button is shown (which is set by css), then parts-of-speech select must be hidden // or the other way round if ( $("#query_word_div button").css("display") == 'flex' ){ $("#query_pos_div").hide(); } else { $("#query_pos_div").show(); } }; // check if resizing is done var doit; window.onresize = function(){ clearTimeout(doit); doit = setTimeout(updateLayout, 500); }; // ********************************* // Start up // ********************************* var startUp = function(){ $("#main_div").show(); // set parts-of-speech filters visibility, depending on mobile/desktop mode updateLayout(); // focus on search box and activate tooltip $("div#query_word_div").find("input").focus(); $("div#query_word_div input").tooltip({items: "[data-tooltip]", content: function(){return $(this).attr("data-tooltip-content");}}); // if lem_id was given, nothing else is needed: fetch the lemma with that lem_id! if (sQuery_lem_id != null){ // show the search div (which is first hidden for layout reasons) $("div#query_div").css("opacity", 1.0); // put the search query from url into the search box if (sQuery_q != null) $("div#query_word_div input").val( sQuery_q.replace(/%3f/gi, '?') ); try { plausible('Search', {props: {lem_id: sQuery_lem_id, via_url: true}}); } catch(error){ // do nothing when plausible malfunctions } searchForLemmaId( sQuery_lem_id ); } // otherwise: usual word search else { // if pos parameter was given, click grammatical categories accordingly if (sQuery_pos != null){ // show the search div (which is first hidden for layout reasons) $("div#query_div").css("opacity", 1.0); var aPos = sQuery_pos.split("\|"); for (var i=0; i<aPos.length; i++){ $("#query_pos_div input[id*='"+aPos[i]+"']").prop("checked", true); } } // if q parameter was given, trigger search automatically if (sQuery_q != null){ // show the search div (which is first hidden for layout reasons) $("div#query_div").css("opacity", 1.0); // put the search query from url into the search box $("div#query_word_div input").val( sQuery_q.replace(/%3f/gi, '?') ); if ( isWildcard( sQuery_q ) ){ try { plausible('Search', {props: {word: sQuery_q, pos: coalesce(sQuery_pos), wildcard: true, via_url: true}}); } catch(error){ // do nothing when plausible malfunctions } searchForWildCard(); } else { try { plausible('Search', {props: {word: sQuery_q, pos: coalesce(sQuery_pos), wildcard: isWildcard(sQuery_q), original_search: sQuery_os, via_url: true}}); } catch(error){ // do nothing when plausible malfunctions } searchForLemma(); } } // normal mode: hide part-of-speech search field else { if ( sQuery_leidraad == null ){ // show the search div (which is first hidden for layout reasons) $("div#query_div").css("opacity", 1.0); $("div#query_pos_div").css("opacity", .7); $( "div#query_pos_div input" ).checkboxradio({ disabled: true }); } } } // initialize checkboxes if ( sQuery_leidraad == null ){ $( "div#query_pos_div input" ).checkboxradio(); setTimeout(function(){ $("div#query_pos_div").css("visibility", "visible"); }, 200); } // if URL tells op open leidraad at a specified location // // ...?leidraad=7-5 means open section 7.5 // if (sQuery_leidraad != null){ setTimeout(function(){ $("#footer_div").remove(); $("#suggestions_div").empty().hide(); // remove filter button for parts-of-speech filter $("#query_word_div").find("button.ui-button").remove(); // and remove parts-of-speech filter too $("#query_pos_div").remove(); $("div#query_div fieldset legend").text("Zoek in de Leidraad"); $("div#query_word_div input").off("click"); $("div#query_word_div input").off("keyup"); $("#query_word_input").autocomplete( "disable" ); $("#query_word_input").val(""); $("#query_word_input").focus(); // remove tooltip if active $("#query_word_div input").tooltip("close"); // prevent scrolling $('html, body').css({ overflow: 'hidden', height: '100%' }); $("#query_word_input").keyup(function(e){ var sSearchVal = $(this).val(); // Enter striken if (e.which == 13){ // start search $("#results_div").empty().html("<object class='leidraad_main' type='text/html' data='./leidraad.html?q="+sSearchVal+"'></object>"); } }); // put the search query from url into the search box if (sQuery_show != null) $("div#query_word_div input").val( sQuery_show.replace(/%3f/gi, '?') ); $("div#query_word_div").addClass("leidraad"); // prevent padding bottom to be applied in this case, which causes stickybar to malfunction $("div#main_div").addClass("leidraad_loaded"); // toggle 'Woordenlijst'/'Spellingregels' label $("#wrdlst_button").css("display", "inline"); $("#leidraad_button").css("display", "none"); // go to specified destination var sDestination = sQuery_leidraad; if (sDestination == 'menu'){ $("#results_div").empty().html("<object class='leidraad_main' type='text/html' data='./leidraad.html'></object>"); } else { // we might have a section number // or a title without section number if (sDestination.match(/[\d]+(|\-[\d]+)/)){ sDestination = sDestination.replace(/\-/g, "/") } // build url var sDestinationUrl = "./leidraad/"+sDestination+".html" + (sQuery_show != null ? "#"+sQuery_show : ""); $("#results_div").empty().html("<object class='leidraad_main' type='text/html' data='"+sDestinationUrl+"'></object>"); } // show the search div (which is first hidden for layout reasons) $("div#query_div").css("opacity", 1.0); }, 500); } // ********************************* // Set sticky header // ********************************* setStickyHeader(); // ********************************* // when to start a search // ********************************* $("div#query_word_div input").keyup(function(e){ // make absolutely sure that we won't have capitals (in any silly browser) $(this).val($(this).val().toLowerCase()); // set part-of-speech filters resetPartOfSpeechFilters(); // remove tooltip if user has started typing $("div#query_word_div input").tooltip("close"); // Enter striken if (e.which == 13){ window.scrollTo({ top: 0, behavior: 'smooth' }); // autocomplete not needed anymore setTimeout(function(){ if ( $("ul.ui-autocomplete").length>0) { $("#query_word_input").autocomplete("close"); } }, 500); // update the URL const url = (window.location.href).replace(/\?.+$/, ""); const state = {q: encodeURIComponent($("div#query_word_div input").val())}; window.history.pushState(state, "", url); window.location.replace(url+"?q="+encodeURIComponent($("div#query_word_div input").val())); // start search if ( isWildcard( $("div#query_word_div input").val() ) ){ try { plausible('Search', {props: {word: $("div#query_word_div input").val(), pos: "", wildcard: true, via_url: false}}); } catch(error){ // do nothing when plausible malfunctions } searchForWildCard(); } else { try { plausible('Search', {props: {word: $("div#query_word_div input").val(), pos: "", wildcard: false, via_url: false}}); } catch(error){ // do nothing when plausible malfunctions } searchForLemma(); } } // backspace: reset filters if (e.which == 8){ resetPartOfSpeechFilters(); } }); // ********************************* // set up AUTO-COMPLETE // ********************************* $("#query_word_input").autocomplete({ delay: (navigator.userAgent.toLowerCase().indexOf('firefox') > -1 ? 750 : 500), // 250 is too low for FireFox (gets very slow then!) minLength: 2, source: function(request, response){ var sPos = getPartOfSpeechFilters(); sWord = request.term; if ( isWildcard(sWord) ){ // we don't want suggestions anymore if ( $("ul.ui-autocomplete").length>0) { $("#query_word_input").autocomplete("close"); } } else { $.ajax({ "type": "GET", "url": sSpellingServiceUrl+"/lexicon/get_suggestions", "data": { "database": sSpellingResource, "wordform": sWord.replace(/%/g, '\\%').replace(/\?/g, '_').replace(/\*/g, '%').trim(), // take care of wild cards too "part_of_speech": sPos.trim(), "onlyvalid": true, "max": 10, "dummy": new Date().getTime() }, "success": function(xml) { var sSuggestionsList = $(xml).find("suggestions").text(); var aSuggestionsList = sSuggestionsList.split(" \| "); // if we have any useful results, generate a pulldown if (aSuggestionsList.length > 0 && aSuggestionsList[0] != '' && aSuggestionsList[0] != 'UNKNOWN'){ response($.map(aSuggestionsList, function (item) { return { label: item, value: item }; })); } else if ( $("ul.ui-autocomplete").length>0) { $("#query_word_input").autocomplete("close"); } }, "error": function(xhr, error, thrown){ // keep silent if autocomplete malfunctions // We will give a useful error message when the search start // if it is still relevant at that stage } }); } } }); // ********************************* // re-starting to edit the word means the filter must be reset // ********************************* $("div#query_word_div input").click(function(){ resetPartOfSpeechFilters(); }); // ********************************* // mouse over search box // ********************************* var mouseEnterId, mouseLeaveId; $("div#query_word_div input").mouseenter(function(){ clearTimeout(mouseEnterId); clearTimeout(mouseLeaveId); var $this = $(this); $this.attr("data-tooltip", true); $this.attr("data-tooltip-content", "U kunt jokers gebruiken:<BR><BR><B>?</B> voor één onbekend teken<BR><B>*</B> voor meer onbekende tekens") mouseEnterId = setTimeout(function(){ $this.tooltip("open"); // auto hide after few seconds setTimeout(function(){ $this.tooltip("close"); }, 5000); }, 500); }); $("div#query_word_div input").mouseleave(function(){ clearTimeout(mouseLeaveId); var $this = $(this); mouseLeaveId = setTimeout(function(){ $this.tooltip("close"); }, 500); }); // ********************************* // part-of-speech filters clicked! // ********************************* $("div#query_pos_div input").click(function(e){ // it mustn't be allowed to uncheck the very last selected filter if (getNumberOfSelectedFilters() ==0) return false; // update the URL const url = (window.location.href).replace(/\?.+$/, ""); const state = {q: encodeURIComponent($("div#query_word_div input").val()), pos: encodeURIComponent(getPartOfSpeechFilters())}; window.history.pushState(state, "", url); window.location.replace(url+"?q="+encodeURIComponent($("div#query_word_div input").val())+"&pos="+encodeURIComponent(getPartOfSpeechFilters())); // start search if ( isWildcard( $("div#query_word_div input").val() ) ){ try { plausible('Search', {props: {word: $("div#query_word_div input").val(), pos: getPartOfSpeechFilters(), wildcard: true, via_url: false}}); } catch(error){ // do nothing when plausible malfunctions } searchForWildCard(); } else { try { plausible('Search', {props: {word: $("div#query_word_div input").val(), pos: getPartOfSpeechFilters(), wildcard: false, via_url: false}}); } catch(error){ // do nothing when plausible malfunctions } searchForLemma(false); } }); // ********************************* // Buttons in header // ********************************* $(".menu_item").click(function(){ $("div#menu").find("td.active").removeClass("active"); $(this).parent().addClass("active"); }); $("#leidraad_button").click(function(){ window.location.replace("./?leidraad=menu"); const url = (window.location.href).replace(/\?.+$/, ""); const state = JSON.parse(JSON.stringify("")); window.history.pushState(state, "", url); }); }; // end of start up function // if first call (no parameters), // wake up the database! if (params == null){ $.ajax({ "type": "GET", "url": sSpellingServiceUrl+"/lexicon/find_wordform", "data": { "database": sSpellingResource, "wordform": "wakker", "part_of_speech": "", "paradigm": true, "diminutive": true, "onlyvalid": true, "regex": false, "dummy": new Date().getTime() }, "success": function(xml) { startUp(); }, "error": function(jqXHR, textStatus, errorThrown){ console.log("Oh dear! Had a bad night?"); } }); } // else just start up else { startUp(); } }); </script> </body> </html>