getElementsByTagName问题

时间:2012-02-21 11:31:05

标签: javascript getelementsbytagname dom-traversal

  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);
    
  3. alert表示匹配仅返回ad.doubleclick.net个标记中的2个。 我首先想到的是,如果没有放在身体的最底部,代码就无法访问整个身体。 但它在我的代码之后的div“interstitial_wrapper”中找到了2个标签。

    所以我的问题是:

    • 为什么会如此
    • 如何访问全身表单正文启动(我可能不会使用正文'onload'事件。它需要尽快使用脚本)

    请查看http://wap7.ru/folio/bannerstat/partners/doubleclick2.html 并查看视图源,因为它太大而无法包含在这里。

1 个答案:

答案 0 :(得分:2)

您不必绑定到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 );
});