Opera中的Document.body

时间:2011-06-29 06:29:27

标签: javascript opera

我在检索body标签的链接时遇到了问题。我试过了:

  1. document.body,遗憾的是它是空的
  2. 在枚举文档的子项时按tagName搜索正文,它只找到头标记:(
  3. document.getElementsByTagName,返回undefined
  4. 我正在尝试在onload事件处理程序中获取body标签的链接。这是页面的HTML代码:

    <html>
        <head>
            <title>Some page</title>
            <script src="/adv.js" type="text/javascript"></script>
        </head>
        <body>
            This is text
        </body>
    </html>
    

    这里是adv.js的源代码:

    (function () {
    
        var myRandom = function (min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        };
    
        var myFunction = function () {
            var newScriptAddr = '/adLoader.js?r=' + myRandom(1,1000000);
    
            var fileref = document.createElement('script');
            if (typeof fileref != "undefined")
            {
               fileref.setAttribute("type", "text/javascript");
               fileref.setAttribute("src", newScriptAddr);
    
               document.getElementsByTagName("head")[0].appendChild(fileref);
            }
        };
    
        if (window.onload)
        {
            var currOnLoad = window.onload;
            window.onload = function () {
                currOnLoad();
                myFunction();
            };
        }
        else
            window.onload = myFunction();
    
    }) ();
    

    adLoader.js的源代码:

    (function () {
    
        var mainCnt = document.createElement('div');
        mainCnt.appendChild(document.createTextNode('The text'));
    
        var _body = document.body;
    
        if (!_body)
        {
            var htmlTag = document.documentElement;
            for(var i = 0; i < htmlTag.childNodes.length; i++)
            {
                if (htmlTag.childNodes[i].nodeName.toLowerCase() == 'body')
                {
                    _body = htmlTag.childNodes[i];
                    break;
                }
            }
        }
    
        if (!_body)
            _body = document.getElementsByTagName('BODY') [0];
    
        if (!_body)
            _body = document.getElementsByTagName('body') [0];
    
        if (_body)
            _body.appendChild(mainCnt);
        else
            alert('WTF!!');
    
    }) ();
    

    浏览器是Opera 11.10 OS Ubuntu Linux。有没有办法得到这个链接?我的目标是在body标签中添加带position:fixed的div。

2 个答案:

答案 0 :(得分:3)

myFunction()未返回任何功能,因此您要将undefined分配给window.onload。你可能意思是window.onload = myFunction;

无论如何,正如目前所写,代码立即运行,并且尚未到达body元素。

答案 1 :(得分:-1)

如果head标签中的js代码和onload事件之前的body标签查询,则应该在浏览器读取头部时获取null。