Vous trouverez ci-dessous une série de scripts conçus avec Javascript. Ces scripts sont intégrés aux pages de GRIFF. Vous pouvez les copier, les distribuer, et les modifier si vous en citez l'origine. Ces scripts devraient se trouver dans l'entête des documents HTML et être activés au besoin. Vous comprendrez mieux leur fonctionnement et leur utilisation en vous promenant dans les exercices réels de GRIFF.

Atelier du REFAD
































Voici un script qui renvoie automatiquement au dernier exercice fait (même partiellement) par l'apprenant. Il soutend que chaque exercice contient un autre script.

<script language="javascript">
<!-- begin script
//  Following functions written by:  Bill Dortch, hIdaho Design <bdortch@hidaho.com>
//  The following functions are released to the public domain.

function FixCookieDate (date) {
  var base = new Date(0);
  var skew = base.getTime(); // dawn of (Unix) time - should be 0
  if (skew > 0)  // Except on the Mac - ahead of its time
  date.setTime (date.getTime() - skew);
}

function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

//Following function written by Martin Beaudoin (mbeaudoi@gpu.srv.ualberta.ca)
//gets cookie: last file ("derniere") 

//gets the location of last file 			
//visited in site, opens a window and loads that file

function GetCookieLastFileVisited (){      
	fenetre = (GetCookie("derniere"));
	if (fenetre == null){
	    matin = "1";
	}else{
		location = fenetre;
			}
}
// end script -->
</script>

Pour utiliser la fonction de renvoi automatique, il faut avoir créé le "cookie" avec la fonction suivante. Si vous faites appel à des fenêtres multiples (frames), vous le mettez dans le fichier qui crée les fenêtres.

<script language="javascript">
<!-- begin script
//  Following functions written by:  Bill Dortch, hIdaho Design <bdortch@hidaho.com>
//  The following functions are released to the public domain.

function FixCookieDate (date) {
  var base = new Date(0);
  var skew = base.getTime(); // dawn of (Unix) time - should be 0
  if (skew > 0)  // Except on the Mac - ahead of its time
    date.setTime (date.getTime() - skew);
}

function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

function SetCookie (name, value) {
  var argv = SetCookie.arguments;
  var argc = SetCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  if (expires!=null) FixCookieDate(expires); //*** Uncomment this line for automatic date correction (see above)
  document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
}

//  Following functions written by:  Martin Beaudoin, University of Alberta <mbeaudoi@gpu.srv.ualberta.ca>
//  The following functions are released to the public domain.


function MakeCookieLastFileVisited (){        //records the location of last file visited in site
 	var expdate = new Date ();
 	addr = document.location;
	expdate.setTime (expdate.getTime() + (1000 * 24 * 60 * 60 * 1000)); // 1000 days from now (mod Mac bug)
	SetCookie ("derniere", addr, expdate, "/");
}
// end script -->
</script>
Retour au menu principal des scripts

Atelier du REFAD
































Script vérifiant le nom et l'adresse électronique de l'apprenant et les saisie s'il ne les trouve pas.

<script language="javascript">
<!-- begin script
//  Following functions written by:  Bill Dortch, hIdaho Design 
//  The following functions are released to the public domain.

function FixCookieDate (date) {
  var base = new Date(0);
  var skew = base.getTime(); // dawn of (Unix) time - should be 0
  if (skew > 0)  // Except on the Mac - ahead of its time
    date.setTime (date.getTime() - skew);
}

function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

function SetCookie (name, value) {
  var argv = SetCookie.arguments;
  var argc = SetCookie.arguments.length;
  var expires = (argc > 2) ? argv[2] : null;
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  if (expires!=null) FixCookieDate(expires); //*** Uncomment this line for automatic date correction (see above)
  document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
}

//  Following functions written by:  Martin Beaudoin, University of Alberta 
//  The following functions are released to the public domain.

function ConfirmCookieName (){   //gets student's name and creates one if unexistant
	var expdate = new Date ();
 	expdate.setTime (expdate.getTime() + (1000 * 24 * 60 * 60 * 1000)); // 1000 days from now (mod Mac bug)
	Name = (GetCookie("nom"));
	if (Name == null) {
		Name = prompt ("Quel est votre nom?");
 		if (Name == ""){
 			Name = prompt ("Je ne peux pas vous aider si vous ne me donnez pas votre nom.");
 		}else{
 			SetCookie ("nom", Name, expdate, "/");
		}
	}
	Email = (GetCookie("email"));
	if (Email == null) {
		Email = prompt ("Quel est votre addresse electronique?");
 		if (Email == ""){
 			Email = prompt ("Je ne peux pas vous aider si vous ne me donnez pas votre addresse electronique.");
 		}else{
 			SetCookie ("email", Email, expdate, "/");
		}
	}
	document.formulaire.username.value = (Email);
	document.formulaire.realname.value = (Name);
}
// end script -->
</script>
Retour au menu principal des scripts

Atelier du REFAD
































Script corrigeant automatiquement un texte à trous (test de clozure). Toutes les entrée à corriger constitue une seule variable appelée "mot" et la bonne réponse (qui suit immédiatement l'entrée) s'appelle "motb". Le programme distingue les différentes questions en utilisant la propriété "array" de la variable. Par exemple, le trou de la question 1 s'appelle "mot[0], celui de la question 2, "mot[1]", etc. Javascript, tout comme C, compte ses éléments matriciels à partir de 0.

<script language="javascript">
<!--hide this script from old browsers  Script copyrights of Martin Beaudoin, Faculte St-Jean, Edmonton, Canada   mbeaudoi@gpu.srv.ualberta.ca  use and distribution allowed if the name of user included
//blanc
function compute(form) {
	note = 0
	count = 0
	while (count != 10){
		if (form.Mot[count].value == form.Motb[count].value){
			note++;
		}else{
			form.Mot[count].value = (form.Motb[count].value + " *" + form.Mot[count].value + "*");
		}
		count++;
	}
	form.result.value = (note + " / " + count)
}
// done hiding from old browsers -->
</SCRIPT>  
Retour au menu principal des scripts

Atelier du REFAD
































Script corrigeant automatiquement les exercices où l'apprenant doit effectuer un choix. Chaque entrée à corriger constitue une variable appelée "mot" puis le numéro de l'entrée (par exemple, "mot13") et la bonne réponse s'appelle "mot" suivi du même numéro puis de la lettre "b" (ici, "mot13b"). Il peut y avoir plusieurs choix, mais plus de quatre choix n'est pas pédagogiquement souhaitable. Il peut aussi y avoir plusieurs réponses acceptables mais ça mélange l'apprenant. Par ailleurs, les numéros d'options ("if (form.Mot1.options[0].selected == true){" dans le programme) réfèrent aux choix disponibles: [0] représente le premier choix, [1] représente le deuxième choix. On modifie ce nombre pour qu'il corresponde à la bonne réponse.

       FRANC 161: exercice A-1-7-2
<script language="javascript">
<!--hide this script from old browsers   Script copyrights of Martin Beaudoin, Faculte St-Jean, Edmonton, Canada   mbeaudoi@gpu.srv.ualberta.ca  use and distribution allowed if the name of user included
//option
function compute(form) {
note = 0
if (form.Mot1.options[0].selected == true){
         note++
         form.Mot1b.checked = false;
}else
         form.Mot1b.checked = true;
if (form.Mot2.options[0].selected == true){
         note++
         form.Mot2b.checked = false;
}else
         form.Mot2b.checked = true;
if (form.Mot3.options[1].selected == true){
         note++
         form.Mot3b.checked = false;
}else
         form.Mot3b.checked = true;
if (form.Mot4.options[0].selected == true){
         note++
         form.Mot4b.checked = false;
}else
         form.Mot4b.checked = true;
if (form.Mot5.options[0].selected == true){
         note++
         form.Mot5b.checked = false;
}else
         form.Mot5b.checked = true;
if (form.Mot6.options[0].selected == true){
         note++
         form.Mot6b.checked = false;
}else
         form.Mot6b.checked = true;
if (form.Mot7.options[1].selected == true){
         note++
         form.Mot7b.checked = false;
}else
         form.Mot7b.checked = true;
if (form.Mot8.options[0].selected == true){
         note++
         form.Mot8b.checked = false;
}else
         form.Mot8b.checked = true;
if (form.Mot9.options[0].selected == true){
         note++
         form.Mot9b.checked = false;
}else
         form.Mot9b.checked = true;
if (form.Mot10.options[0].selected == true){
         note++
         form.Mot10b.checked = false;
}else
         form.Mot10b.checked = true;
if (form.Mot11.options[1].selected == true){
         note++
         form.Mot11b.checked = false;
}else
         form.Mot11b.checked = true;
if (form.Mot12.options[1].selected == true){
         note++
         form.Mot12b.checked = false;
}else
         form.Mot12b.checked = true;
if (form.Mot13.options[0].selected == true){
         note++
         form.Mot13b.checked = false;
}else
         form.Mot13b.checked = true;
if (form.Mot14.options[0].selected == true){
         note++
         form.Mot14b.checked = false;
}else
         form.Mot14b.checked = true;
if (form.Mot15.options[1].selected == true){
         note++
         form.Mot15b.checked = false;
}else
         form.Mot15b.checked = true;
if (form.Mot16.options[0].selected == true){
         note++
         form.Mot16b.checked = false;
}else
         form.Mot16b.checked = true;
if (form.Mot17.options[0].selected == true){
         note++
         form.Mot17b.checked = false;
}else
         form.Mot17b.checked = true;
if (form.Mot18.options[0].selected == true){
         note++
         form.Mot18b.checked = false;
}else
         form.Mot18b.checked = true;
if (form.Mot19.options[1].selected == true){
         note++
         form.Mot19b.checked = false;
}else
         form.Mot19b.checked = true;
if (form.Mot20.options[0].selected == true){
         note++
         form.Mot20b.checked = false;
}else
         form.Mot20b.checked = true;
if (form.Mot21.options[1].selected == true){
         note++
         form.Mot21b.checked = false;
}else
         form.Mot21b.checked = true;
if (form.Mot22.options[0].selected == true){
         note++
         form.Mot22b.checked = false;
}else
         form.Mot22b.checked = true;
if (form.Mot23.options[0].selected == true){
         note++
         form.Mot23b.checked = false;
}else
         form.Mot23b.checked = true;
if (form.Mot24.options[0].selected == true){
         note++
         form.Mot24b.checked = false;
}else
         form.Mot24b.checked = true;
if (form.Mot25.options[1].selected == true){
         note++
         form.Mot25b.checked = false;
}else
         form.Mot25b.checked = true;
nombre = 25
form.result.value = (note + " / " + nombre)
}
// done hiding from old browsers -->
</SCRIPT> 
Retour au menu principal des scripts

Atelier du REFAD