Pregunta

He creado un control Web en ASP para su uso en la integración con Telligent CommunityServer. El control está escrito en ASP con unas 10 líneas de C # backend para controlar la visibilidad de los elementos de interfaz de usuario basado en permisos, pero yo diría que el 90% de la funcionalidad es recto-para arriba Javascript.

El control funciona de maravilla, hasta caer dos instancias del control en la misma página -. Puesto que hacen referencia las mismas funciones Javascript exacta, sólo funcionará uno de ellos

¿Cómo puedo aprovechar esta funcionalidad que tengo, este 1200 líneas de Javascript, y hacerlo de modo que cada instancia del control puede hacer referencia a su cada instancia única de Javascript?

¿Fue útil?

Solución

Si el problema es simplemente encontrar qué elemento HTML activa un evento a continuación, que es fácil - se pasó a usted en los argumentos del evento. (Entonces se puede obtener su elemento padre, por supuesto.) Así que si he entendido correctamente el problema que tiene funciones de JavaScript que hacen referencia a algunos controles, que obtienen duplicada?

No creo que haya ninguna solución mágica aquí: sólo hay que hacer que los identificadores únicos. Si usted no está utilizando los controles del lado del servidor (que manejan esto automáticamente) entonces se podría usar un poco del lado del servidor prefijo o sufijo generado, por ejemplo.

<input id="<%= ParentControlId %>_mytextbox" type="text" />

donde ParentControlId es un identificador único del control de los padres (que sólo podría utilizar Control.ID si no le importa identificadores largos).

Por supuesto, usted debe tratar de volver a utilizar sus funciones de JavaScript en lugar de duplicarlos para cada instancia de control. Si está utilizando el enfoque de identificación generado por el servidor que tendrá que pasar los ID enteras alrededor. Si está utilizando el enfoque de prefijo que sólo puede pasar alrededor del prefijo.

Otros consejos

¿Cómo es su control conseguir el JavaScript en la página, entonces? Inyectarlo directamente? ¿Está utilizando un ScriptReference? El navegador sólo cargar el JS vez si los dos controles referenciados ese mismo JS (misma URL).

Además, es su JS escrito en términos de cualquier instancia de edad? p.ej. ¿tiene como función de la carga (oControlName) o que la función Load () tiene un nombre de instancia no modificable dentro de ella?

OMI, tratando de obtener múltiples archivos JavaScript '' no es el camino a seguir -. Refactorización su código puede obtener la respuesta más rápida

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top