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

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

erreur sous safari


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

erreur sous safari

dimanche 18 octobre 2009 à 17:59:47 | erreur sous safari

laubro

Bonjour

j'essai de monter un script de compte a rebourg avec de l'ajax
le principe un compte a rebourg de 2mn, qui peut être relancé à 2mn en cliquant sur un bouton (et mise à jour d'une donnée dans la bdd) verification a chaque seconde qu'une donnée précise n'est pas été mise à jour, si nouvelle donnée alors on repard à 2mn...
mes premiers tests fonctionnent sous FF et opéra (sous MAC) mais sous safari, ça me génère une erreur au bout de quelques secondes (non régulier, 5scd ou 15scd...), puis une autre et ça bloque safari, enfin ça le ralentit grave avec cumul d'erreurs

Code de la page 1 :


<html>

<body>

<script>

function writediv(texte, oldbid)
{
document.getElementById('test').innerHTML = texte;
document.getElementById('test').style.backgroundColor = "#fff";
document.getElementById('time').style.backgroundColor = "#fff";

if(texte > oldbid)
{
document.getElementById('test').style.backgroundColor = "#ff0";
document.getElementById('time').style.backgroundColor = "#ff0";


var newcible = new Date();
var newtime = parseInt((newcible.getTime() / 1000)+120, 10);

document.getElementById('debut').value = newtime;

}

document.getElementById('oldbid').value = texte;


}


function fnInterval()
{

var oldbid = document.getElementById('oldbid').value;

if(texte = file('requete.php?id=1&oldbid='+oldbid))
{
writediv(texte, oldbid);
}
else
{
var texte = "rien";
document.getElementById('test').innerHTML = texte;
}

}


function post(texte)
{
document.getElementById('bestbid').value = texte;
}



function addpost(user, bestbid)
{
if(texte = file('requete.php?post='+user+"&bestbid="+bestbid))
{
post(texte);
}

}



function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}

setInterval(fnInterval, 1000);
</script>


<div id="test" style="width:30px">--,--</div>
<form method="post" action="">
Old bid :<input type="text" name="oldbid" id="oldbid"><br>
Best bid :<input type="text" name="bestbid" id="bestbid"><br>
User :<input type="text" name="user" id="user">
<input type="button" value="Post" onClick="addpost(user.value, bestbid.value)">
</form>

<bR />
//------------------------
<br>

<input type="text" id="debut">

<script>

var cible = new Date();
var time = parseInt((cible.getTime() / 1000)+120, 10);

function debut()
{
document.getElementById('debut').value = time;
}

debut();


function decompte()
{



var aujourdhui = new Date();

time_tmp = parseInt(aujourdhui.getTime() / 1000, 10);
time_debut = document.getElementById('debut').value;
restant = time_debut - time_tmp;

jour = parseInt((restant / (60 * 60 * 24)), 10);
heure = parseInt((restant / (60 * 60) - jour * 24), 10);
minute = parseInt((restant / 60 - jour * 24 * 60 - heure * 60), 10);
seconde = parseInt((restant - jour * 24 * 60 * 60 - heure * 60 * 60 - minute * 60), 10);
if(seconde<10) { var seconde = '0'+seconde; }
if(minute <1 && seconde <= 15)
{

document.getElementById('time').style.color = "#FF0000";

}

document.getElementById('time').innerHTML = '0'+minute+' m '+seconde+' s ';


if (time_tmp < time_debut)
{
setTimeout('decompte();', 1000);
}
else
{
// Temps fini, on fait ce qu'on veux
document.getElementById('time').innerHTML = "Enchere terminee";

}
}

setTimeout('decompte();', 1000);


</script>

<div id="time">--:--</div>

</body>
</html>

Code de la page php (pour info et c'est des tests...)

<?php

if(isset($_GET['id'])) $id=$_GET['id'];
else $id="";

if(isset($_GET['post'])) $post=$_GET['post'];
else $post="";

if(isset($_GET['bestbid'])) $bestbid=$_GET['bestbid'];
else $bestbid="";

if(isset($_GET['oldbid'])) $oldbid=$_GET['oldbid'];
else $oldbid="";

$link = mysql_connect ($serveur,$user,$password) or die ('Erreur : '.mysql_error() );
mysql_select_db($base) or die ('Erreur :'.mysql_error());

//********************
if($post)
{
$bid = 0.01;

$sql = "UPDATE post SET montant=montant+'$bid', user='$post' where id='1'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$sql = "SELECT * FROM post where id='1'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_assoc($req))
{
echo $data['montant'];
}


}

//********************


$sql = "SELECT * FROM post where id='$id'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_assoc($req))
{

echo $data['montant'];

}

?>

Voilà, quelqu'un voit il un truc qui pourrait déplaire à safari ...???

Laubro
lundi 19 octobre 2009 à 09:27:33 | Re : erreur sous safari

Bul3

Membre Club
Bonjour,
ça me semble tout à fait normal,
ça devrait, à termes, "dans d'autres conditions",
planter aussi avec les autres navigateurs
vous relancez l'appel d'ajax sans
attendre le retour de l'appel précédent !

vous lancez la fonction fnInterval
toutes les secondes, et si la
réponse d'ajax prend plus d'une seconde ?
( et dans les conditions où vous tester
si arrive avec safari )
remarque :
_ vous lancez ajax en asynchrone,
inutile de tester si c'est fini donc .
if(xhr_object.readyState == 4) est
inutile voire nuisible
_ un script de compte a rebours
si ce n'est qu'un compte à rebours
pourquoi appeler un script sur le serveur ?
( sauf s'il y a d'autres infos du serveur
rester sur le client c'est nettement
moins gourmand )
Cordialement [mon Site] [M'écrire] Bul
lundi 19 octobre 2009 à 09:29:48 | Re : erreur sous safari

Bul3

Membre Club
il fallait lire "ajax en synchrone :
xhr_object.open("GET", fichier, false); "

à mon avsi, il faut faire l'appel en asynchrone
et ne relancer le setTimeout que lorsque ajax
a répondu.
lundi 19 octobre 2009 à 09:43:48 | Re : erreur sous safari

laubro


Bonjour

en fait c'est un "début" de scrip pour systeme d'enchere au centime et timé à 2mn

- Le compte a rebourg est lancé a la première enchere postée
- Le compte a rebourg doit être visible sur tout les poste des encherisseurs en même temps
- Les autres encherisseurs doivent postée une enchère avant le terme des 2 mn, ce qui repositionne le chrono à 2mn et relance le compte a rebourg
- En fait, d'enchere, chaque post, replace le chrono à 2mn donc et ajoute 0.01 ctms au prix.

La difficulté est la suivante (d'où appel chaque seconde):

- que tous les visiteur aient le même timing au compte a rebourg affiché
- Le compte a rebourg defile tant qu'il n'y a pas de nouvelle enchere postée
- Si enchere postée, alors tous les postes clients doivent être mis à jour au niveau de la remise à 2mn du chrono et dumontant de l'enchere

donc là le chrono pour le moment est défini en local sur le poste client (new date()) mais par la suite, il me faudra définir cette heure limite (des 2mn) via la bdd et remonter l'info pour redefinir la date de fon de chrono (car ça devra être la même pour tous)

voilà, j'espere avoir été clair dans le but du code. Je ne vois pas trop comment permettre à tous les users d'avoir la même info et le même suivant en même temps sans passer l'ordre toutes les seconde (rythme du compte a rebourg)




Laubro
lundi 19 octobre 2009 à 10:04:28 | Re : erreur sous safari

Bul3

Membre Club
ok, à priori l'appel au serveur semble nécessaire
mais rien à faire, pour un utilisateur, vous ne devez
rappeler ce serveur que lorsqu'il a répondu, sinon
ça queutera.
lundi 19 octobre 2009 à 10:09:03 | Re : erreur sous safari

laubro


c'est sur que c'est "judicieux" comme remarque !!! ce qui est marant (si je puis dire) c'est que seul safari (enfin pas testé sous IE encore) plante ou dison ralentit "enormement" et génère des erreurs...

je vais me pencher sur le problème, merci de ce détail "important"

Laubro
lundi 19 octobre 2009 à 10:14:11 | Re : erreur sous safari

Bul3

Membre Club
tout dépend du contexte.
si ça baigne avec certains navigateurs
ce n'est qu'un "hasard", ce n'est que
"ponctuellement". ça queutera un jour
ou l'autre.


Cette discussion est classée dans : texte, sql, document, getelementbyid, oldbid


Répondre à ce message

Sujets en rapport avec ce message

Texte au survol d'une image [ par Shagrath69 ] Bonjour à tous,pour le site que je suis en train de développer j'ai besoin d'un texte qui s'affiche au survol d'une image.Ne connaissant rien au JS, j OnChange sur liste déroulante! [ par Daroude29 ] Bonjour,Voilà, j'ai un petit soucis avec l'utilisation d'un onChange sur un select, voici le code :dans fichier1.php j'ai le code de la fonction javas Forcer un texte à une balise SELECT [ par Axl1 ] Bonsoir.J'espère trouver une réponse dans ce forum pour un problème que je n'arrive vraiment pas à résoudre et je vous remercie d'avance.J'ai une bali Probleme avec IE et Opera [ par SuperChouquette ] Bonjour, je suis débutant et je tente de faire un script qui permette d'effectuer une recherche dans une liste, celui- ci fonctionne parfaitement sous calculer via un formulaire [ par cedcyr ] bonjour je vien de realiser un formulaire lier a code javascript il n'y a apparament pas d'erreur et pourtant la boucle ne se fait pas pourquoi voici récuperer données table [ par anasjava ] Je suis débutant en java  et  j'ai  un petit souci, je remli une table par des donnée Comment puis-je améliorer ce script ??? [ par nanti ] Bonjour à tous !Tout d'abord, j'espère être dans le bon thème... !?Comme annoncer, je souhaite améliorer ces scripts pour n'en faire qu'un qui soit op Surligner un mot clé sur une page à partir d'une toolbar [ par Chisai ] Bonjour, Je veux faire un stabilo, a peut près comme celui proposé dans la toolbar de google. Voici ce que j'ai: ------------------------------------- Problème de script faisant ralentir ie [ par gregusse ] Bonjour ! J'ai un problème sur un script que j'ai codé. J'ai le message de IE "un script fait ralentir internet explorer ...". Apparemment c'est à ca Cet objet ne gere pas cette methode ou cette propriété [ par timalin ] Bonjour, le code ci-dessous est tiré d'un code complet mais comporte une erreur quand je le lance sous Ulimate 7 mais marche bizarement sous XP pro.Ca


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,546 sec (4)

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