Tengo el siguiente código PHP:

echo "<input type='image' src='myImage.png' onClick='javascript:location.href = \"index.php?p=1&copy=true\"' />";

Si hago clic en la imagen, Chrome redirige a index.php?p=1&copy=true. Pero si hago clic en la imagen en Internet Explorer 11, se redirige a index.php?p=1©=true.

Internet Explorer parece reemplazar las entidades HTML en las URL.

Intenté usar &amp; en lugar de &, pero tuve el mismo problema: IE lo reemplaza por el símbolo de copyright.

¿Cómo puedo usar &copy en mi URL? Sé que una posible solución sería reemplazar &copy con &whatever, pero debo cambiar mi sistema de agujeros.

También hay otras personas con el mismo problema:

https://gist.github.com/pguillory/5136408

3
mhellmeier 20 mar. 2017 a las 01:31

2 respuestas

La mejor respuesta

La versión correcta es con &amp;. Lamentablemente, sin embargo, IE11 tiene un gran error viejo que hace que tome &amp;copy y lo convierta en el símbolo de copyright.

Encontré una solución alternativa: codifique en porcentaje el c en copy:

echo "<input type='image' src='myImage.png' onClick='location.href = \"index.php?p=1&amp;%63opy=true\"' />";
// --------------------------------------------------------------------------------------^^^

Ejemplo de la versión correcta que, sin embargo, falla en IE11: http://jsbin.com/dajihiwiwo/

Ejemplo de lo anterior (que también es correcto, solo más obtuso) que funciona en IE11: http://jsbin.com/ nehuxazeka /

3
T.J. Crowder 19 mar. 2017 a las 22:51

¿Por qué no simplemente intercambiar las variables?

En lugar de index.php?p=1&copy=true, debería funcionar con index.php?copy=true&amp;p=1.

3
unor 21 mar. 2017 a las 13:33