He estado pensando en algo. En mi foro, hay códigos CSS predeterminados que los usuarios pueden elegir. Esto cambia todo, desde el fondo hasta el color del texto. Tengo un código de javascript. ¿Es posible hacer que el javascript sea parte del CSS, de modo que si un determinado código CSS está predeterminado, parte de él es ese javascript?Poner Javascript en CSS
Respuesta
You can, pero realmente no debería. En su lugar, use archivos de script separados que correspondan a los archivos CSS que usa. Tal vez haga otra pregunta en la que exponga un escenario específico en el que trate de resolver un problema específico, y probablemente podamos decirle la práctica que generalmente se hace para resolverlo.
Hay un trabajo alrededor ...
No poner la escritura en el código CSS puro, sino que tienen una secuencia de comandos para generar CSS Dependiendo de lo lenguaje de programación que está utilizando (por ejemplo, PHP) su enlace al archivo CSS debe parecerse a:
<link href="/styles.php" media="screen" rel="stylesheet" type="text/css" />
incluso se puede añadir como params:
<link href="/styles.php?type=main" media="screen" rel="stylesheet" type="text/css" />
y en el que styles.php lo que debería parecerse archivo CSS con una pocas excepciones:
body {
<?php if ($_GET['type'] == 'main') echo color: BLACK; else color: RED; ?>
.........
}
que quería lograr lo mismo (tener variables y algo de lógica de procesamiento en el CSS) que me incitó a desarrollar un par de herramientas independientes (uno angular y uno V-JS):
CjsSS.js es una herramienta Javascript de Vainilla (por lo que no hay dependencias externas) que admite volver a IE6.
ngCss es un módulo angular + Filtro + Factory (aka: plug-in) que soporta 1.2+ angular (para volver a IE8)
Ambos conjuntos de herramientas le permiten hacer esto de una ESTILO etiqueta o dentro de un archivo * .css externo:
/*
<script src='external_logic.js'></script>
<script>
var mainColor = "#cccccc";
</script>*/
BODY {
color: /*{{mainColor}}*/;
}
Y esto en sus páginas en style
atributos:
<div style="color: {{mainColor}}" cjsss="#sourceCSS">blah</div>
(o para ngCss)
<div style="color: {{mainColor}}" ng-css="sourceCSS">blah</div>
NOTA: En ngCss, también se puede hacer $scope.mainColor
en lugar de var mainColor
Por defecto, el código JavaScript se ejecuta en un IFRAME de espacio aislado, pero en realidad no es diferente de cómo el navegador procesa tus archivos * .js. Solo asegúrese de crear su propio CSS y alojarlo en su propio servidor, entonces XSS no es un problema. Pero la caja de arena proporciona mucha más seguridad y tranquilidad.
CjsSS.js y ngCss caen en algún lugar en medio de las otras herramientas de torno para llevar a cabo tareas similares:
LESS, y SASSStylus son todos Preprocesadores solamente y requieren que usted pueda aprender un nuevo idioma y mangle tu CSS. Básicamente, extendieron CSS con nuevas funciones de idioma. Todos están limitados a los complementos desarrollados para cada plataforma, mientras que CjsSS.js y ngCss le permiten incluir cualquier biblioteca de Javascript a través del
<script src='blah.js'></script>
.AbsurdJS vieron los mismos problemas con los preprocesadores y fueron en la dirección opuesta; en lugar de extender CSS, AbsurdJS creó una biblioteca Javascript para generar CSS sin tocar CSS directamente.
CjsSS.js y ngCss tomaron el término medio; ya sabes CSS, ya sabes Javascript, así que déjalos trabajar juntos de una manera simple e intuitiva. CjsSS.js se puede ejecutar en el lado del servidor (a través de Node.js) para preprocesar el CSS o ambos se pueden ejecutar en el lado del cliente. También puede ejecutarlo de forma híbrida, donde la mayoría de las variables se preprocesan y las demás se realizan en el lado del cliente.
- 1. Poner CSS y JavaScript en archivos o HTML principal?
- 2. Poner un retraso en Javascript
- 3. ¿Hay alguna manera de poner relaciones/restricciones en CSS?
- 4. ¿Está bien poner JavaScript en vistas parciales?
- 5. ¿Cómo puedo poner [] (corchetes) en RegExp javascript?
- 6. ¿Por qué poner javascript en asp.net?
- 7. ¿Por qué poner JavaScript en la cabeza
- 8. HTML/CSS - ¿Poner img encima de img?
- 9. Css/images/javascript en codeigniter
- 10. Poner en mayúscula la primera letra de las oraciones CSS
- 11. Poner atributos title/alt en CSS: después de {content: image}?
- 12. de análisis de CSS en JavaScript/jQuery
- 13. ¿Dónde poner todo el código JavaScript jQuery?
- 14. ¿Dónde debería poner mi código JavaScript?
- 15. HTML + CSS + Javascript Editor
- 16. JavaScript onClick cambiar css
- 17. ¿Cómo poner php dentro de JavaScript?
- 18. zoom css/javascript
- 19. En phpStorm, cómo poner javascript breakpoint en un archivo php
- 20. Cómo cargar archivos CSS usando Javascript?
- 21. Poner bordes CSS alrededor de los botones de radio
- 22. ¿Cómo puedo poner código JavaScript en un documento PDF?
- 23. Cómo poner mi javascript en el pie de página
- 24. cotizaciones poner alrededor de una cadena variable en JavaScript
- 25. ¿Cómo poner un div en el centro del navegador usando CSS?
- 26. Obtener ruta URL relativa en CSS Javascript
- 27. HTML y CSS a PDF en JavaScript
- 28. ¿Cambiar CSS de clase en Javascript?
- 29. Color de fondo CSS en JavaScript
- 30. Múltiples archivos javascript/css: ¿mejores prácticas?
Hay muchas formas diferentes de insertar JS en CSS. Ver p. http://stackoverflow.com/questions/3607894/cross-site-scripting-in-css-stylesheets – grahamparks
Nunca debe colocar JS en CSS por razones de rendimiento/compatibilidad, pero no debe suponer que los hackers no pueden por los motivos grahamparks enlaces a. –
Gracias @grahamparks, editado en consecuencia. –