genero la numeración de mis encabezados y cifras con counter
y content
propiedades de CSS:Cómo acceder a la CSS contenido generado con JavaScript
img.figure:after {
counter-increment: figure;
content: "Fig. " counter(section) "." counter(figure);
}
Este (navegador apropiado error u omisión) da un buen etiquetado "Fig. 1.1", "Fig. 1.2" y así sucesivamente siguiendo cualquier imagen.
Pregunta: ¿Cómo puedo acceder a esto desde Javascript? La pregunta es doble en cuanto a que me gustaría acceder al el valor actual de un determinado contador (en un determinado nodo DOM) o el valor del contenido generado por CSS (en un determinado nodo DOM) o, obviamente, ambas informaciones.
Antecedentes: me gustaría añadir a los enlaces de respaldo que hacen referencia a las cifras del número apropiado, como esto:
<a href="#fig1">see here</h>
------------------------^ " (Fig 1.1)" inserted via JS
Por lo que yo puedo ver, que se reduce a este problema: yo podía acceso content
o counter-increment
través getComputedStyle
:
var fig_content = window.getComputedStyle(
document.getElementById('fig-a'),
':after').content;
sin embargo, este no es el en vivo valor, pero el declarado en la hoja de estilo. No puedo encontrar ninguna interfaz para acceder al real en vivo. En el caso del contador, ni siquiera hay una propiedad de CSS real para consultar.
Editar: Cavando más y más a través de las especificaciones DOM, encontré the DOM Level 2 Style Counter interface. Esto parece a) permitir el acceso al valor del contador actual yb) implementarse en Firefox, al menos. Sin embargo, no tengo idea de cómo usarlo. Mi enfoque actual murió trágicamente después de esta salida Firebug:
// should return a DOM 2 Counter interface implementation...
window.getComputedStyle(fig_a_element, ':after')
.getPropertyCSSValue("counter-increment")[0]
.getCounterValue();
[Exception... "Modifications are not allowed for this document" code: "7"
nsresult: "0x80530007 (NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR)"
location: "http://localhost/countertest.html Line: 71"]
Cualquier idea, cómo esto podría ser traído a la vida sería muy apreciada.
Editar 2: Aparentemente malinterpreté el objeto Counter del estilo DOM Nivel 2. Tampoco tiene propiedad para devolver el valor del contador actual. Esto hace que el enfoque anterior sea inválido.
Nuevo enfoque: ¿Existe la posibilidad de leer el contenido de un pseudo-elemento a través del DOM? Es decir, ¿puedo seleccionar el pseudo-elemento (me viene a la mente treeWalker
) y luego obtener su nodeValue
? (Si empieza a escribir 'jQuery' ahora, por favor, reconsiderar cambiar ese término en 'Arden' ...)
'getCounterValue' no hace lo que suena. Es una forma poco segura y segura para los tipos que han implementado la idea de obtener diferentes tipos de valores de declaración de CSS analizados como objetos estructurados. 'getCounterValue' en realidad significa" obtener valor de propiedad CSS, como un objeto 'Counter'". El objeto 'Contador' es solo un tipo de valor que representa la declaración de CSS, no puede obtener el número de contador real de la misma. – bobince
Sí, después de volver a leer la especificación, aparentemente el objeto Counter no tiene ninguna propiedad para el valor actual. ¡Maldito! – Boldewyn