Problema de getElementsByTagName
-
28-10-2019 - |
Pregunta
- Tengo una página con muchas secuencias de comandos de doble clic
-
Tengo un código js insertado en la parte superior del cuerpo (a través de s.src= ('parts_async_dev.js')):
var innerHTML = document.getElementsByTagName('html')[0].innerHTML.toString(); var regexp = /ad.doubleclick.net/gm; var matches = innerHTML.match(regexp); alert('found ' + matches.length + ' tags by regexp ' + regexp); console.log( innerHTML);
alert
dice que coincide con sólo 2 de las etiquetas ad.doubleclick.net
.
Primero pensé que el código no puede acceder a todo el cuerpo si no se coloca en la parte inferior del cuerpo.
Pero encuentra 2 etiquetas dentro del div "interstitial_wrapper" que viene después de mi código.
Entonces, mis preguntas son:
- por qué es tan
- Cómo acceder a todo el cuerpo desde el inicio del cuerpo (no puedo usar el evento body 'onload'. Es necesario usar el script lo antes posible)
Consulte http://wap7.ru/folio/bannerstat/partners./doubleclick2.html y ver la fuente de la vista, porque es demasiado grande para incluirla aquí.
Solución
No es necesario que se vincule al evento onload.Solo vincula al evento DOMContentLoaded
.
Dado que ya incluyó jQuery en su página, esto se puede hacer fácilmente usando .ready
:
$(document).ready(function() {
var innerHTML = document.body.innerHTML;
/* If you want to use a RegExp, use the following:
var regexp = /ad\.doubleclick\.net/gi; // Note: escaped dot
var matches = innerHTML.match(regexp);
matches = matches ? matches.length : 0; // matches can be `null`
*/
// This is more effective:
var matches = innerHTML.split('ad.doubleclick.net').length - 1;
alert('Found ' + matches + ' tags.');
console.log( innerHTML );
});