Code qui ne fonctionne pas sur IE8

Résolu
Ewan83 Messages postés 6 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 10 février 2012 - 24 mars 2011 à 14:42
 Utilisateur anonyme - 22 avril 2011 à 18:18
[^^!2][b]Attention : question de noob /b[^^happy3]

Bonjour,
Quelqu'un pourrait-il me dire pourquoi le petit module que je tente de faire pour créer un widget en m'appuyant sur la recherche de mon site principal ne fonctionne pas sur IE alors que ça marche avec tous les autres navigateurs... ?
Merci d'avance pour vos réponses

{Je sais, il est tout dégueu...}

[code=html]




Catalogue de la médiathèque de Lorient











/**/






/**/


[code=html]
[code=js]
//Sylvain Wallez
* @version $Id: forms-lib.js,v 1.1 2006/03/08 12:22:16 gpegliasco Exp $
*/

// Handlers that are to be called in the document's "onload" event
if (typeof forms_onloadHandlers == "undefined") {
// check in case script was already loaded
forms_onloadHandlers = new Array();
}

function forms_onload() {
for (var i = 0; i < forms_onloadHandlers.length; i++) {
forms_onloadHandlers[i].forms_onload();
}
// Clear it (we no more need them)
forms_onloadHandlers = null;
}

// Handlers that are to be called in form's "onsubmit" event
// FIXME: this single var implies only one form per page, and needs to be
// visited if we decide to support several forms per page.
if (typeof forms_onsubmitHandlers == "undefined") {
// check in case script was already loaded
forms_onsubmitHandlers = new Array();
}

function forms_onsubmit() {
if (forms_onsubmitHandlers == null) {
// Form already submited, but the new page is not yet loaded. This can happen when
// the focus is in an input with an "onchange" and the user clicks on a submit button.
return false;
}

for (var i = 0; i < forms_onsubmitHandlers.length; i++) {
if (forms_onsubmitHandlers[i].forms_onsubmit() == false) {
// handler cancels the submit
return false;
}
}
// clear it
forms_onsubmitHandlers = null;
return true;
}

/**
* Submit the form containing an element, also storing in the hidden
* 'forms_submit_id' field the name of the element which triggered the submit.
*/
function forms_submitForm(element, name) {
// Mac IE 5 doesn't recognize key word 'undefined', so use typeof and compare strings
if (typeof(name) == "undefined") {
name = element.name;
}

var form = forms_getForm(element);
if (form == null) {
alert("Cannot find form for " + element);
} else {
form["forms_submit_id"].value = name;
// FIXME: programmatically submitting the form doesn't trigger onsubmit ? (both in IE and Moz)
if(form.onsubmit() == true)
return;
form.submit();
// Block subsequent submits
form.onsubmit = function() {return false;}

}
}

/**
* Crawl the parents of an element up to finding a form.
*/
function forms_getForm(element) {
while(element != null && element.tagName != "FORM") {
element = element.parentNode;
}
return element;
}

/**
* Move a named element as an immediate child of the element.
* This is required for help popups inside tabs. The reason is that CSS positioning
* properties ("left" and "top") on a block with a "position: absolute" are actually relative to
* the nearest ancestor that has a position of "absolute", "relative" or "fixed".
* See http://www.w3.org/TR/CSS21/visudet.html#containing-block-details $4
*/

function forms_moveInBody(element) {
element.parentNode.removeChild(element);
document.body.appendChild(element);
}

/**
* Create a popup window for a named element.
*
* @param id the ID of the element to make a popup with.
*/
function forms_createPopupWindow(id) {
var result = new PopupWindow(id);
result.autoHide();
// add to onload handlers
result.forms_id = id;
result.forms_onload = function() {
forms_moveInBody(document.getElementById(this.forms_id));
}
forms_onloadHandlers.push(result);
return result;
}


function forms_createOptionTransfer(id, submitOnChange) {
var result = new OptionTransfer(id + ".unselected", id);
result.setAutoSort(true);
// add to onload handlers
result.forms_id = id;
result.forms_onload = function() {
var form = forms_getForm(document.getElementById(this.forms_id));
this.init(form);
sortSelect(this.left);
sortSelect(this.right);
}
result.submitOnChange = submitOnChange;
result.forms_transferLeft = function() {
this.transferLeft();
if (this.submitOnChange) {
forms_submitForm(document.getElementById(this.forms_id));
}
}
result.forms_transferRight = function() {
this.transferRight();
if (this.submitOnChange) {
forms_submitForm(document.getElementById(this.forms_id));
}
}
result.forms_transferAllLeft = function() {
this.transferAllLeft();
if (this.submitOnChange) {
forms_submitForm(document.getElementById(this.forms_id));
}
};
result.forms_transferAllRight = function() {
this.transferAllRight();
if (this.submitOnChange) {
forms_submitForm(document.getElementById(this.forms_id));
}
};
forms_onloadHandlers.push(result);

// add to onsubmit handlers
result.forms_onsubmit = function() {
// Select all options in the "selected" list to that
// its values are sent.
selectAllOptions(this.right);
}
forms_onsubmitHandlers.push(result);
return result;
}


/**
* Show a tab in a
*
* @param tabgroup (string) name of the
* @param idx (integer) index of the selected tab
* @param length (integer) total number of tabs
* @param state (string, optional) name of the input storing the tabgroup state
*/
function forms_showTab(tabgroup, idx, length, state) {
// Change state value
//if (state.length > 0) {
// document.forms[0][state].value = idx;
//}
for (var i = 0; i < length; i++) {
// Change tab status (selected/unselected)
var tab = document.getElementById(tabgroup + "_tab_" + i);
if (tab != null) {
tab.className = (i == idx) ? 'forms-tab forms-activeTab': 'forms-tab';
}
// Change tab content visibilty
var tabitems = document.getElementById(tabgroup + "_items_" + i);
if (tabitems != null) {
tabitems.style.display = (i == idx) ? '' : 'none';
// execute event handler if any
if (i == idx &&
window.onTabShownHandlers != null &&
window.onTabShownHandlers[tabgroup] != null) {
var onShowHandler = window.onTabShownHandlers[tabgroup][tabgroup + "_items_" + i];
if (onShowHandler != null) {
eval(onShowHandler);
}
}
}
}
}
//]]>

// 0)) {
var firstquery = Formulaire.elements["ValueSearch1st"].value;
if ((firstquery != null) && (firstquery.length > 0)) {
if (QuerySearch != "") {
QuerySearch += "ET" + SEP_ITEM + firstcriteria + SEP_ITEM + firstquery + SEP_ITEM;
QueryFilter += "Link6=ET"
+ "ValueSearch1st=" + firstquery
+ ",CriteriaSearch1st=" + firstcriteria + ",";
}
else {
QuerySearch += firstcriteria + SEP_ITEM + firstquery + SEP_ITEM;
QueryFilter += "ValueSearch1st=" + firstquery
+ ",CriteriaSearch1st=" + firstcriteria + ",";
}
}
}



//The date criteria need to be at the end. Otherwise,
//the HIP does not use this parameter (why ??)



Formulaire.elements["SR-Sort"].value = sortCriteria;
Formulaire.elements["SR-Request"].value = QuerySearch;
Formulaire.elements["SearchFilterASV"].value = QueryFilter;
Formulaire.elements["SR-Mode"].value = "AdvancedSource";
Formulaire.elements["InvolvedSrcV"].value = ResourcesList;
Formulaire.elements["SR-SelectedSources"].value = ResourcesList;

//Formulaire.submit(); // This is done by default if we do not return false;
}

function displayValueField () {
var form = document.forms["f_metasearch"];

}

function selectMultiSources() {
var Formulaire = document.forms["f_metasearch"];
Formulaire.elements["metasearchType"][1].checked = true;
}

function uncheckMultiSources() {
var Formulaire = document.forms["f_metasearch"];
var NbSourcesCultBretonne = Formulaire.elements[ "listSearchRessourceCultBretonne.size" ].value;
var NbSourcesFondNum = Formulaire.elements[ "listSearchRessourceFondNum.size" ].value;
var NbSourcesBibUniv = Formulaire.elements[ "listSearchRessourceBibUniv.size" ].value;
var NbSourcesPeriodic = Formulaire.elements[ "listSearchRessourcePeriodic.size" ].value;
var NbSourcesFrance = Formulaire.elements[ "listSearchRessourceFrance.size" ].value;
var NbSourcesEtranger = Formulaire.elements[ "listSearchRessourceEtranger.size" ].value;

for (var i = 0; i < NbSourcesCultBretonne; i++) {
Formulaire.elements["listSearchRessourceCultBretonne." + i + ".bRessource"].checked = false;
}

for (var i = 0; i < NbSourcesFondNum; i++) {
Formulaire.elements["listSearchRessourceFondNum." + i + ".bRessource"].checked = false;
}

for (var j = 0; j < NbSourcesBibUniv; j++) {
Formulaire.elements["listSearchRessourceBibUniv." + j + ".bRessource"].checked = false;
}

for (var j = 0; j < NbSourcesPeriodic; j++) {
Formulaire.elements["listSearchRessourcePeriodic." + j + ".bRessource"].checked = false;
}

for (var j = 0; j < NbSourcesFrance; j++) {
Formulaire.elements["listSearchRessourceFrance." + j + ".bRessource"].checked = false;
}
for (var j = 0; j < NbSourcesEtranger; j++) {
Formulaire.elements["listSearchRessourceEtranger." + j + ".bRessource"].checked = false;
}
}

/*
Check if a source is selected
*/

function checkSearchMetaSources() {
var Formulaire = document.forms["f_metasearch"];

// Catalogue checked
if (Formulaire.elements["metasearchType"][0].checked == true) {
return true;
}

var NbSourcesCultBretonne = Formulaire.elements["listSearchRessourceCultBretonne.size"].value;
var NbSourcesFondNum = Formulaire.elements["listSearchRessourceFondNum.size"].value;
var NbSourcesBibUniv = Formulaire.elements["listSearchRessourceBibUniv.size"].value;
var NbSourcesPeriodic = Formulaire.elements["listSearchRessourcePeriodic.size"].value;
var NbSourcesFrance = Formulaire.elements["listSearchRessourceFrance.size"].value;
var NbSourcesEtranger = Formulaire.elements["listSearchRessourceEtranger.size"].value;

// For each available sources, checks if the current source is checked or not
for (var i = 0; i < NbSourcesCultBretonne; i++) {
// Adds needed information about selected source and ignore unselected ones
if (Formulaire.elements["listSearchRessourceCultBretonne." + i + ".bRessource"].checked == true) {
return true;
}
}

for (var i = 0; i < NbSourcesFondNum; i++) {
// Adds needed information about selected source and ignore unselected ones
if (Formulaire.elements["listSearchRessourceFondNum." + i + ".bRessource"].checked == true) {
return true;
}
}


for (var i = 0; i < NbSourcesBibUniv; i++) {
// Adds needed information about selected source and ignore unselected ones
if (Formulaire.elements["listSearchRessourceBibUniv." + i + ".bRessource"].checked == true) {
return true;
}
}

for (var i = 0; i < NbSourcesPeriodic; i++) {
// Adds needed information about selected source and ignore unselected ones
if (Formulaire.elements["listSearchRessourcePeriodic." + i + ".bRessource"].checked == true) {
return true;
}
}

for (var i = 0; i < NbSourcesFrance; i++) {
// Adds needed information about selected source and ignore unselected ones
if (Formulaire.elements["listSearchRessourceFrance." + i + ".bRessource"].checked == true) {
return true;
}
}

for (var i = 0; i < NbSourcesEtranger; i++) {
// Adds needed information about selected source and ignore unselected ones
if (Formulaire.elements["listSearchRessourceEtranger." + i + ".bRessource"].checked == true) {
return true;
}
}


alert( 'Vous devez sélectionner une source pour la recherche.' );

return false;
}


//]]>
/code[code=html]




















































   Recherche rapide...

 
 
 
 
 



 
 
 
 
 
 


 


Tous les critères
Titre

Titre du périodique
Auteur
Sujet
Collection
Editeur
Résumé
Langue

Instrument de musique

Indice Dewey/Massy

 

 



 
 
 
 
 
 




Ne fonctionne pas sur Internet Explorer pour le moment...






/code

6 réponses

Ewan83 Messages postés 6 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 10 février 2012
22 avril 2011 à 12:51
Mission accomplie !
Pour info, après moult essais et écrémages le code donne :
<script type="text/javascript">
function submitForm() {
var SEP_ITEM = "[xx]";
var SEP_ITEMS= "[xy]";

var Formulaire = document.forms["f_metasearch"];

//--- Builds SR-Sources coplet attribute (list of selected sources) ---//
// Resets list of selected Sources//
var Resource = "";
var ResourcesList = "";


var sortCriteria = "";

//--- Builds SR-Request coplet attribute (Request) ---//
// Resets list of Query items //
var QuerySearch = "";



var NbSourcesCatalogue = Formulaire.elements["listSearchCatalog.size"].value;
for (var i=0; i<NbSourcesCatalogue; i++) {
//The search is done in the catalog.
Resource = Formulaire.elements["listSearchCatalog." + i + ".hRessource"].value + SEP_ITEM
+ Formulaire.elements["listSearchCatalog." + i + ".tRessource"].value + SEP_ITEM
+ Formulaire.elements["listSearchCatalog." + i + ".xslQuery"].value + SEP_ITEM
+ Formulaire.elements["listSearchCatalog." + i + ".xslDublin"].value;
ResourcesList = ResourcesList + Resource + SEP_ITEMS;




}






// Assigns the 4th Parameter ('SR-Sources', corresponding to the list of selected sources) of SearchResult-1 coplet
Formulaire.elements["SR-Sources"].value = ResourcesList;



// Gets the keyed-in values
var firstcriteria = Formulaire.elements["CriteriaSearch1st"].value;
if (firstcriteria != null) {
if(firstcriteria.length > 0) {
var firstquery = Formulaire.elements["ValueSearch1st"].value;
if (firstquery != null) {
if(firstquery.length > 0){
if (QuerySearch != null) {
QuerySearch += firstcriteria + SEP_ITEM + firstquery + SEP_ITEM;

}
else {
QuerySearch += firstcriteria + SEP_ITEM + firstquery + SEP_ITEM;

}
}
}
}
}

//The date criteria need to be at the end. Otherwise,
//the HIP does not use this parameter (why ??)




Formulaire.elements["SR-Request"].value = QuerySearch;

Formulaire.elements["SR-Mode"].value = "AdvancedSource";
Formulaire.elements["InvolvedSrcV"].value = ResourcesList;
Formulaire.elements["SR-SelectedSources"].value = ResourcesList;

//Formulaire.submit(); // This is done by default if we do not return false;

}

</script>
<form action=
"http://mediatheque.lorient.fr/repons/portal/booklink?" method=
"get" id="f_metasearch" name="f_metasearch" enctype=
"multipart/form-data" onsubmit="submitForm();"
target="_blank">
















































   Recherche rapide...,

,
,
,
,
,

----

,
<select name="CriteriaSearch1st" id=
"CriteriaSearch1st" size="1">

<option value="Tout" selected="selected">Tous les critères</option>
<option value="Titre">Titre</option>
<option value="TitrePer">Titre du périodique</option>
<option value="Auteur">Auteur</option>
<option value="Sujet">Sujet</option>
<option value="Collection">Collection</option>
<option value="Editeur">Editeur</option>
<option value="resume">Résumé</option>

<option value="Langue">Langue</option>

<option value="instrument">Instrument de musique</option>
<option value="indiceDewey">Indice Dewey/Massy</option>
</select>,
,
,
,
,

----

Widget Netvibes / iGoogle



</form>

Merci quand même pour l'attention

PS : Comment on fait pour clore un message ?
3
Utilisateur anonyme
10 avril 2011 à 12:22
Salut,

Quand tu dis que ça ne marche pas sous IE, peux-tu donner plus de précisions ?
0
Ewan83 Messages postés 6 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 10 février 2012
10 avril 2011 à 22:06
Salut,
Merci de t'intéresser à mon problème ! :)
En fait, ce code affiche un moteur de recherche qui envoie les résultats de la recherche dans le catalogue sur le site de la bibliothèque (pour un widget netvibes et éventuellement un onglet de page Facebook). J'ai tenté de copier et adapter la balise <form> du site d'origine. La recherche abouti sur tous les navigateurs sauf sur IE ! Il est cependant probable qu'il y est une interférence avec un autre js sur le site d'origine...
Si tu as une idée, je suis preneur ! :)
++
0
Utilisateur anonyme
11 avril 2011 à 19:13
Si ça marche sur tous les navigateurs sauf IE...Ça peut être à cause du JavaScript.
De mémoire, y'a pas une histoire entre IE et les //<![CDATA[ ? Ça remonte à loin ça

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ewan83 Messages postés 6 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 10 février 2012
20 avril 2011 à 10:46
salut,
Excuse moi d'avoir tardé à répondre... J'étais sur d'autres projets.
J'ai essayé en enlevant la balise <style> et donc le cdata dedans mais rien n'y fait.
++
0
Utilisateur anonyme
22 avril 2011 à 18:18
Impec' !

Normalement pour chaque message tu as une icône "Réponse acceptée". Clique sur cette icône qui est présente sur ton dernier message (qui comporte la résolution de ton problème =)

Bonne continuation


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
Rejoignez-nous