Tengo una serie de botones de colores hechos de intervalos que tienen respaldo de jQuery. Cuando jQuery se ejecuta, mueve la clase "activa", carga una imagen de color diferente, cambia varias etiquetas y cambia el color de fondo de varios tramos en otro div.
Tengo esto funcionando tanto con .click como con .on(touchend, pero tengo la impresión de que la razón por la que esto parece haber funcionado en mi visor móvil, pero no en mi móvil, es porque estoy ejecutando Safari.
Creo que safari no admite touchstart, touchend y algunas otras funciones táctiles. El safari en mi teléfono SÍ tiene Java habilitado, pero aún así no funciona.
1.) ¿Safari realmente no es compatible con touchstart/touchend? 2.) ¿Safari admite eventos táctiles de jQuery? 3.) ¿Es inapropiado vincular el sitio web en el que está trabajando? (si está bien, entonces lo haré) 4.) ¿Sería más fácil convertir todo en html?
También tengo este fragmento de código para convertir clics en javascript, pero no sé si hay un evento que funcione en safari para pantallas táctiles similares a .click
document.querySelectorAll('.link').forEach(link => { link.addEventListener('click', event => { /* ... */ }); });Lo arreglé.
El problema no era el safari. El problema era que podía hacer que los botones funcionaran cuando estaba conectado, pero no cuando no estaba conectado al back-end. Esto se debió al orden en que se cargaron las cosas (me dijeron).
Para responder a mis propias preguntas:
1.) Safari admite touchstart/touchend y otros eventos táctiles. Safari anteriormente no tenía soporte para estos eventos táctiles, pero años de quejas finalmente los agregaron a su sistema.
2.) Nunca busqué más para encontrar si había más eventos táctiles que funcionaran con safari.
3 y 4 no necesitan respuestas mías.
Entonces, ¿cómo resolví el problema? Estoy trabajando fuera de WordPress. WordPress carga jQuery en el pie de página. Esto significa que todos sus elementos se cargarán antes de que jQuery (y JavaScript) puedan ejecutarse o estar listos. Entonces, para cambiar eso, tuve que hacer lo que se dice en este sitio https://jamesparsons.com/2020/02/jquery-render-blocking-insights#:~:text=It%E2%80%99s%20important%20to %20revise%20su%20consola%20para%20JavaScript,es%20a%20mucho%20más%20actual%20y%20eficiente%20versión%3A
y en caso de que el sitio se caiga alguna vez, aquí está el código que necesitarías insertar en el archivo "function.php" de tu tema (puse el mío en la parte inferior de la página)
add_filter( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback'); function replace_default_jquery_with_fallback() { $ver = '1.12.4'; wp_dequeue_script( 'jquery' ); wp_deregister_script( 'jquery' ); // Set last parameter to 'true' if you want to load it in footer wp_register_script( 'jquery', "//ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", '', $ver, false ); wp_add_inline_script( 'jquery', 'window.jQuery||document.write(\'<script src="'.includes_url( '/js/jquery/jquery.js' ).'"><\/script>\')' ); wp_enqueue_script ( 'jquery' ); }Según tengo entendido, esto obligó a WordPress a no cargar jQuery de la manera típica y luego lo obligó a cargar de una manera diferente, lo que le permite funcionar correctamente en un sitio web de WordPress cuando no está conectado al back-end.
En WordPress, jQuery solo funciona si escribe "jQuery". No puede usar '$'. pero al cambiar este código ahora puede (y posiblemente debe) usar el '$'
Aspecto de línea final que funcionó:
$('.changecolor span').ready(function touch(e) { $('.changecolor span').on('touchend', function touch(e) { //.......// }); });Hacer un seguimiento. No conozco bien las reglas de este sitio. ¿Debo eliminar mi publicación ya que resolví mi problema?