2012-02-21 4 views
0
  1. У меня есть страница с большим количеством скриптов
  2. двойной клик
  3. Я JS код вставляется в верхней части тела (через s.src = ('parts_async_dev.js')):getElementsByTagName вопрос

    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 и посмотрите источник просмотра, потому что он слишком большой для включения сюда.

+0

я получаю 28, когда я посещаю эту страницу. –

+0

Перед поиском элементов убедитесь, что DOM загружен. – Stefan

+0

@Stefan - я не могу использовать событие onload –

ответ

2

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

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

Спасибо! Я не могу полагаться на jquery, так как это не моя страница. я действительно ** window.addEventListener ('DOMContentLoaded', функ, ложь); ** см http://en.wikipedia.org/wiki/DOM_events#Other_events подробности –

+0

@Lev Перед сделав это, проверьте, что страница уже запускала событие 'DOMContentLoaded', через [' document.readyState'] (https://developer.mozilla.org/en/DOM/document.readyState). –

+0

, так как мой код находится в самом верху, я не уверен, возможно ли готовое состояние загружено. –

Смежные вопросы