- ¿Qué son los comportamientos de Drupal en absoluto?
- ¿Qué tipo de capa de servicio ofrece a los desarrolladores de módulos?
- ¿Qué tipo de relación se asigna a
jQuery.ready
?
Respuesta
Versión larga: Drupal.behaviors no es simplemente un reemplazo para jQuery.ready ya que este último sólo se ejecuta una vez (cuando DOM está listo para la manipulación): comportamientos pueden ser disparados varias veces durante la ejecución de la página y pueden ser ejecutar cada vez que se insertan nuevos elementos DOM en el documento.
Además, los módulos podrían anular o extender un comportamiento existente (por ejemplo, si un módulo tiene un comportamiento de agregar un efecto de rebote en todos los enlaces, un segundo módulo podría reemplazar el comportamiento por un efecto de rebote diferente).
Versión corta: es más modular, aunque la documentación podría mejorarse.
También, a partir de Drupal 7, la configuración definen utilizando drupal_add_js (PHP) o en Drupal.settings.modulename (Javascript) son pasados directamente como segundo parámetro (siendo el primero el contexto) a el comportamiento.
Por ejemplo:
Drupal.behaviors.changeLinks = function(context, settings){
if (!settings) settings = Drupal.settings.changeLinks;
$("a", context).hover(function() {
$(this).css('color', settings.color);
});
};
Y si uno de su script (u otra) crea nuevos nodos, todavía podría tener los comportamientos aplicados a los nuevos nodos sin tener que saber lo que se iinstalled otros módulos:
var newNodes = $('<a href="#">Hello</a> <a href="#">World</a>').appendTo('#someDiv');
Drupal.attachBehaviors(newNodes);
Solo para tener en cuenta que necesita ajustar cualquier uso de $() dentro (función ($) {// código aquí}) (jQuery); (Con las versiones actuales de Drupal 7) Documentación oficial aquí: https://www.drupal.org/node/756722#using-jquery –
¿De qué sirve pasar el contexto aquí? – AlxVallejo
El contexto es el fragmento del DOM que se ha modificado. Inicialmente, es todo el documento. Pero para todas las llamadas posteriores, solo será la nueva parte añadida o modificada. Por ejemplo, si usa la biblioteca de Lightbox para abrir algo nuevo en Lightbox, entonces tendrá un contexto que coincidirá solo con las cosas recién agregadas. De esta forma, cualquier búsqueda/coincidencia de jQuery se realizará en un conjunto limitado de elementos HTML en lugar de todo el documento. Además, esto evita el reprocesamiento de los elementos ya procesados. Se recomienda usar $ (". A-thing", context) para la eficacia cuando corresponda. – asiby
duplicado funcionalidad
Tenga en cuenta que los Drupal.behaviors arquitectura duplica la funcionalidad ya en jQuery.
También, a partir de este escrito, no parece haber ninguna documentación o estudios de casos para Drupal.behaviors exterior de Drupal en sí; y la documentación dentro de Drupal (como se indicó anteriormente) podría beneficiarse considerablemente de las mejoras. Al momento de escribir esto, parece que la documentación detallada primaria tiene acceso restringido solo por tarifa.
Esto significa que puede notar que la degradación del rendimiento, las anomalías y los resultados inesperados no son consistentes con jQuery estándar que son endémicos del ecosistema Drupal.behaviors.
funcionalidad nativa jQuery
En contraste con Drupal.behaviors, la funcionalidad integrada de la API estándar jQuery es ampliamente documentada incluyendo demostraciones y ejemplos en línea. Además, hay numerosos ejemplos en vivo libremente disponibles en sitios como jsfiddle.
Los enlaces en la sección de ver también enumeran las llamadas jQuery api relevantes para manejar nuevos elementos DOM insertados en el documento.
Ver también
"no parece haber ninguna documentación" Lo siento pero eso es simplemente incorrecto. Simplemente busque "jquery Drupal.behaviors" y obtendrá 85k + resultados. Aquí hay algunos en mi primera página: https://drupal.org/node/756722 http://blog.amazeelabs.com/de/comment/510193 http://drewish.com/2011/05/11/drupal -javascripting/ Sin duda hay margen de mejora aquí, pero tal como está, su respuesta es más FUD que útil. –
// no parece haber ninguna documentación o estudios de caso para Drupal.behaviors *** fuera de Drupal *** *** (énfasis no en el original) Por favor, siéntase libre de agregar cualquier aclaración o corrección legítima, pero la afirmación que hiciste aquí no es precisa. Lo más importante es que omitió las palabras "fuera de Drupal". Si hay otros marcos o proyectos que han adoptado comportamientos de Drupal, siéntase libre de agregar enlaces aquí y mejorar la calidad de la respuesta. Tal como está ahora, la adición no refuta nada en la respuesta original. – dreftymac
Los comportamientos son específicos de Drupal y es por eso que no hay documentos ni casos de uso fuera de Drupal. Los comportamientos amplían la funcionalidad de jQuery, no la están duplicando. Enviar contexto y configuración no es algo que jQuery haga. Y también proporcionan integración con el marco AJAX de Drupal. Decir que duplican jQuery demuestra muy poca comprensión de la API JavaScript de Drupal. – Luxian
Buscando una respuesta similar y llegaron aquí, todavía sin pistas. Finalmente encontró un poco más de explicación (y ejemplos) de un artículo aquí: https://benmarshall.me/drupal-behaviors/
yo no soy el autor original, por lo que sólo puedo citar algunos textos:
¿Cuáles son Drupal comportamientos?
En resumen, Drupal.behaviors es una forma más modular y mejor de implementar jQuery.ready. A diferencia de jQuery.ready que solo se ejecuta una vez cuando el DOM está listo para la manipulación, Drupal.behaviors se puede ejecutar varias veces durante la ejecución de la página. Aún mejor, se pueden ejecutar siempre que se inserten nuevos elementos DOM en el documento (es decir, AJAX contenido impulsado).
Drupal.behaviors también puede anular o incluso extender un comportamiento existente . Por ejemplo, si un comportamiento de módulo agrega un efecto de rebote en todos los enlaces, otro módulo podría reemplazar ese comportamiento con un efecto de rebote diferente de .
Otra ventaja añadida de Drupal.behaviors (a partir de Drupal 7), es la capacidad utilizar los drupal_add_js (PHP) o Drupal.settings.modulename (JS) y pasar ajustes como un segundo parámetro (el primer ser el contexto ) al comportamiento.
Junto con las respuestas antes mencionadas sobre las cosas más importantes es que puede pasar datos desde PHP a javascript es el siguiente
valores que pasan de PHP tener JavaScript con "Drupal.settings"
You puede hacer fácilmente las variables de PHP a disposición de Javascript en el extremo frontal con Drupal.settings utilizando drupal_add_js() función
<?php
drupal_add_js(array('myModule' => array('key' => 'value')), 'setting');
?>
o
<?php
$element['#attached']['js'][] = array(
'type' => 'setting',
'data' => array('myModule' => array('key' => 'value')),
);
?>
Este estará disponible en Javascript como:
if (Drupal.settings.myModule.key === 'value') {
alert('Got it!');
}
- 1. comportamientos y estilos
- 2. Comportamientos de mezcla (Silverlight 4)
- 3. yii components: eventos y comportamientos?
- 4. Trazar comportamientos propios con matplotlib
- 5. Los comportamientos extraños con timeIntervalSince1970
- 6. Llamada automática OnDetaching() para Comportamientos de Silverlight
- 7. Cómo simular diferentes comportamientos de NAT
- 8. WCF ServiceHost ya cuenta con 5 comportamientos
- 9. comportamientos programador malo C++ en C#
- 10. ¿Debo usar Drupal 6 o Drupal 7?
- 11. Escala Drupal
- 12. Drupal multilingüe
- 13. Descripción de los comportamientos de ancho de columna de JQGrid
- 14. Drupal 6 contraseña de usuario importada a Drupal 7
- 15. Automatización de perfiles/pruebas unitarias de los comportamientos de NHibernate
- 16. Cómo agregar JS a Drupal 7
- 17. Cómo agregar WCF IncludeExceptionDetailInFaults a comportamientos de punto final?
- 18. Añadiendo comportamientos de servicio WCF con el código
- 19. Los comportamientos extraños OpenGL en la elaboración de un cubo
- 20. Modelo de dominio enriquecido con comportamientos y ORM
- 21. WCF Implementación de servicio único, Comportamientos múltiples. Posible
- 22. MiniBufExplorer y NERD_Tree Buffer de cierre comportamientos inesperados
- 23. Comportamientos extraños de Solr/Lucene con operadores booleanos
- 24. cómo vincular correctamente comportamientos de jQuery ui en meteoro?
- 25. Creador de consultas de Drupal
- 26. codificación de URL de Drupal
- 27. ¿Drupal 7 es más lento que Drupal 6?
- 28. Drupal hook_cron orden de ejecución
- 29. Renderizar un nodo de Drupal
- 30. Temas de Drupal "no seleccionados"
@JoshiConsultancy En términos generales, una respuesta eficaz en StackOverflow consiste en una respuesta directa ** ** incluyendo enlaces a las citas y referencias. La mayoría de las personas que ven esta página ** llegaron aquí buscando ** para comenzar. – dreftymac