begin process at 2012 05 29 03:10:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

Application sur template de phpBB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Application sur template de phpBB

vendredi 29 janvier 2010 à 14:42:44 | Application sur template de phpBB

MChauban

Je développe une application PHP/HTML/AJAX en utilisant le framework de phpbb. Ce code fonctionne sur l'environnement de dév IE7 mais pas avec les autres IE8, CHROME, FIREFOX. C'est donc sûrement que j'ai fait un truc pas très nette. N'étant pas destiné à une utilisation externe, je n'ai pas de lien public à proposer...

Ce qui marche avec IE7 et que j'aimerai pouvoir reproduire ailleurs:
Dans une page un FORM "newite" englobe un ensemble de critères qui permettent d'affiner l'objet de la création des slots entres autres les notions usages et nombre de slots/connexions à ouvrir.
Donc cette page permet à un utilisateur via une liste déroulante de choisir le nombre de slots qu'il veut 1 à 8. En fonction de ce nombre j'utilise une fonction JS sur le onchange de la liste qui va charger dans un DIV de la même page une seconde page PHP/HTML contenant le nombre de slot passé en paramètre. Ceci fonctionne avec tous les navigateurs lorsque l'on choisi un nombre dans la liste. En revanche l'appel à la fonction phpbb
Code Javascript :
onload_functions.push('slots_onchange(document.getElementById("newite"))');
avec pour valeur par défaut 1 ne fonctionne que sur IE7. Mais là n'est pas le majeur problème. Pour chaque slot généré dans la seconde page et affiché dans la page principal la fonction
Code Javascript :
function socket_onclick(id)
est associée.

note la variable f reçoit this.form dans l'appel soit la référence au formulaire newite contenant tous les critères.

la fonction qui charge la page dans le DIV:
Code Javascript :
function slots_onchange(f)
{
  var xhr_object = null;
  var httpRequest = false;

  // Prépration
  if(window.XMLHttpRequest) // Firefox
     xhr_object = new XMLHttpRequest();
  else if(window.ActiveXObject) // Internet Explorer
     xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  else { // XMLHttpRequest non supporté par le navigateur
     alert("{L_MSGERR_NOXMLHTTREQUEST}");
     return;
  }

  // Initialisation
  var position = "socketdiv"; // nom du DIV qui va recevoir le contenu
  var method = "POST";
  var filename = "{S_SOCKETURL}";
  var sloid    = f.elements['sloid'].options[f.elements['sloid'].selectedIndex].value; 
  var data     = null;
   
  if(sloid != "")
     data = "sloid=" + sloid;

  // Récupération du nombre de slots à afficher

	// On ouvre la requete vers la page désirée
	xhr_object.open(method, filename, true);
	xhr_object.onreadystatechange = function(){
	if ( xhr_object.readyState == 4 )
	{
		// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
		document.getElementById(position).innerHTML = xhr_object.responseText;
	}
	}
  if(method == "POST")
     xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  
  xhr_object.send(data);
}


Ci dessous la seconde page qui sera affichée dans le DIV. (elle est alimentée par PHP)
Code HTML :
<!-- IF S_REGISTERED -->
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
  <TR>
    <!-- BEGIN rowsockets -->
    <TD><IMG ID="{rowsockets.IDCOUNTER}" SRC="{S_IMGPATH}/{S_IMGSOCKET}" ONCLICK="socket_onclick('{rowsockets.IDCOUNTER}')"></TD>
    <!-- END rowsockets -->
  </TR>
</TABLE>
<!-- ENDIF -->


Ensuite dans la page principale j'ai la fonction JS qui répond à socket_onclick.

Code Javascript :
function socket_onclick(id)
{

// Detect the click on socket picture
  var lheight   = 400;
  var lwidth    = 600;
  var filename  = "{S_SOCKETPOPURL}";
  var lf        = document.getElementById("newite");
  var usaid     = lf.elements['usaid'].options[lf.elements['usaid'].selectedIndex].value;
  var data      = null;
  var mytop     = (screen.height-lheight)/2;
  var myleft    = (screen.width-lwidth)/2;
  var myoptions = "top=" + mytop + ", left=" + myleft + ", scrollbars=auto, resizable=no, location=no, menubar=no, status=no, menubar=no, Width=" + lwidth + ", Height=" + lheight;

  data = "&slotid=" + id;

  if(usaid != "")
    data = data + "&usaid=" + usaid;

  // Appel popup
  window.open(filename + data, "extension", myoptions);

}


Le clique sur une image représentant un connexion va ouvrir dans un popup la liste des connexions possibles en fonction de l'usage destiné au pool de connection. L'usage est récupéré dans une seconde liste nommée "usaid" dans le form "newite". Donc avec IE7 la popup s'ouvre et reçoit bien les paramètres. Avec Firefox
Code Javascript :
var lf        = document.getElementById("newite");
ne génère pas d'erreur mais il semblerait que lf soit pas affecté et du coup
Code Javascript :
var usaid     = lf.elements['usaid'].options[lf.elements
lui est fatal. J'ai essaye d'ajouter juste après
Code Javascript :
alert("hello");
qui n'est même pas exécuté.


Pouvez-vous m'aider ?
Merci.
Mark.
mardi 2 février 2010 à 11:51:07 | Re : Application sur template de phpBB

MChauban

Réponse acceptée !
Bon alors c'était impossible de trouver avec ce que j'avais posté. Mais j'ai trouvé. Dans certains cas, usage n'est plus une liste mais un simple affichage car selon comment on rentre dans cette page l'usage est défini une fois pour toute.

J'ai donc ajouté une condition telle que si c'est une liste alors
Code Javascript :
lf.elements['usaid'].options[lf.elements['usaid'].selectedIndex].value;

Sinon
Code Javascript :
lf.elements['usaid'].value;


Voilà.
Mark.


Cette discussion est classée dans : page, code, var, xhr, js


Répondre à ce message

Sujets en rapport avec ce message

Reload d'un .js toutes "x" secondes. [ par shadow125 ] Bonsoir à vous tous !Voila j'essaye de faire un petit script et j'ai besoin de le relancer toutes les 1secondes, sans recharger la page.J'ai trouvé co Remplissage de "div" fonctionnant sous IE mais pas sous Firefox [ par AllCoKe ] Salut,J'utilise sur ma page le script suivant pour remplir 2 balises div différentes : [code]var xhr = null; function getXhr(){     if(window.XMLHtt Envoyer plusieurs variables dans le open [ par fabricioliking ] Bonjour, Voila j'aimerai pouvoir envoyer grâce au javascript dans une page php deux variables.voici un extrait du code contenant mon formulaire : [COD Appliquer un style uniforme à chaque champs de formulaire [ par ofillion ] Bonjour, Je suis vraiment dummy en JS et voici ce que j'aimerais arriver à faire. C'est probablement très simple pour vous. Je voudrais qu'au charg Fonction php couplée à ajax : Ca ne fonctionne pas pourquoi ??? [ par StevenL86 ] Hello, Me revoilà avec mes cas foireux [^^happy8]. Ce coup çi,j'ai écrit un script php que voici :[code=php] $var=$_GET['id']; $val=$var+1; $texte=$_G Fonction php couplée à ajax : Ca ne fonctionne pas pourquoi ??? [ par StevenL86 ] Hello, Me revoilà avec mes cas foireux [^^happy8]. Ce coup çi,j'ai écrit un script php que voici :[code=php] $var=$_GET['id']; $val=$var+1; $texte=$_G panier d'achat mis a jour [ par Dav_c ] Bonjour, je code un script de e-commerce qui pour l'instant marche sans problème sauf que le panier ne s'actualise pas toujours. Bref un peu de code commande javascript sur page de code .js [ par metal76 ] salut à tous, j'ai une page de code .js , mais je ne sais pas comment mettre un lien pour lancer une video présent dans mn bureau. Problème d'exécution JS dans retour ajax [ par fabulofr ] Bonjour à tous :) J'ai un p'tit sushi :D euh.. souci lol ^^ Je fais une requête ajax sur mon serveur bref je vous passe les détails du code ajax... Code js dans une page html mis dans une page js [ par JLuc01 ] Bonjour a tous, Voila un petit code ci dessous que j'utilise et qui marche quand il est utilise dans une page HTML. Mais, si j'essaye de le mettre


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales