2010-10-29 5 views
0

un fichier php:Javascripts travaille pour le chrome, dans IE, il ne fonctionne pas dans

<script type="text/javascript"> 
function click(input){ 
    img = new Image(); 
    img.src = '/click.php?id=' +input; 
} 
</script> 

<a href="http://www.out.com" target="_blank" onclick="click('IDinmysql')" >outlink</a> 

click.php mises à jour mysql après que je clique sur ce lien

cela fonctionne pour le chrome, mais pas pour IE, quel est le problème?

+0

est une autre façon qui peut enregistrer des clics sans utiliser redirect.php (tête :) – nzh

Répondre

0

Si vous ne souhaitez pas utiliser les redirections, attendez que le navigateur complète la demande à click.php, puis accédez à l'adresse externe. Le code ci-dessous peut nécessiter quelques réglages pour être cross-browser, je me souviens que certains navigateurs ont des problèmes avec la méthode .click() ou l'événement onreadystatechange().

<script type="text/javascript"> 
function click(input,aObj){ 
    img = new Image(); 
    img.onreadystatechange = function(){ 
     aObj.onclick = function(){}; 
     aObj.click(); 
    }; 
    img.src = '/click.php?id=' +input; 
    return false; 
} 
</script> 

<a href="http://www.out.com" target="_blank" onclick="return click('IDinmysql',this)">outlink</a> 

idée deuxième est d'ouvrir click.php en pop-up avec des dimensions 1x1, et le faire revenir <body onload="window.close()"></body>

+0

merci beaucoup, cela fonctionne – nzh

3

should'nt-il

onclick="out('IDinmysql')" 

De plus vous devez ajouter un horodatage pour empêcher la mise en cache de IE.

img.src = '/click.php?t='+new Date().getTime()+'&id=' +input; 

serait également bon de faire img privé

var img = new Image(); 
+0

Il ne marche pas encore travailler dans IE – nzh

0

Il semble y avoir un code manquant ici. Comment onclick = "click()" appelle la fonction "out (input)"?

+0

Je suis désolé, j'ai mal tapé ici.Edited – nzh

1

Même avec les corrections suggérées, votre code peut parfois fonctionner et parfois échouer car deux actions sont effectuées en même temps.

Votre événement onclick demande au navigateur de charger une nouvelle image, puis la page en cours est redirigée vers une nouvelle adresse. Le problème est que l'image est chargée de manière asynchrone et selon le navigateur, laisser la page qui charge l'image peut également annuler tous les chargements en attente.

Vous pouvez résoudre ce problème en changeant le href de votre lien pour qu'il appelle /click.php?id=IDinmysql&redirect=http://www.out.com (UrlEncode correctement). Ensuite, votre script PHP enregistre le clic puis effectue la redirection.

+0

J'ai également remarqué que Google suit les clics de l'utilisateur (pas tous les clics, surtout lorsque vous êtes identifié avec votre compte Google) sur les résultats de recherche de cette façon (d'abord une page intermédiaire Google s'appelle alors une redirection se produit), donc c'est probablement le chemin à parcourir. – Mart

0

Le vrai problème (bien sûr les autres ont également fixé):

changer le nom de la fonction. Il existe également une méthode javascript native appelée click,

+0

'javascript: void (alerte (typeofclic));' -> undefined. –

+0

Essayez-le dans Internet Explorer à l'intérieur d'un lien ou tout autre élément répertorié dans la référence MSDN: 'click me': vous verrez, c'est un objet. Si vous l'essayez dans la barre d'adresse, cela ne marchera pas, car le clic n'est pas une méthode de fenêtre, c'est une méthode de certains éléments. –

+0

Votre droit. J'ai toujours pensé que ça devait être appelé par ça.cliquez() ' –