проблема getElementsByTagName - PullRequest
       13

проблема getElementsByTagName

0 голосов
/ 21 февраля 2012
  1. У меня есть страница со множеством сценариев двойного клика
  2. У меня есть код js, вставленный вверху тела (через 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 говорит, что совпадение возвращает только 2 из ad.doubleclick.net тегов.Сначала я подумал, что код не может получить доступ ко всему телу, если он не расположен в самом низу тела.Но он находит 2 тега внутри div "interstitial_wrapper", который идет после моего кода.

Итак, мои вопросы:

  • почему это так
  • Как получить доступ ко всемуначало формы тела тела (я не могу использовать событие 'onload' тела. требуется использовать скрипт как можно скорее)

Пожалуйста, посмотрите на http://wap7.ru/folio/bannerstat/partners/doubleclick2.html и посмотрите исходный код, потому что этослишком велик, чтобы включать сюда.

1 Ответ

2 голосов
/ 21 февраля 2012

Вам не нужно связываться с событием onload. Просто привяжите к событию DOMContentLoaded.

Поскольку вы уже включили jQuery на свою страницу, это можно сделать, используя .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 );
});
...