Javascript 歌剧中的身体

Javascript 歌剧中的身体,javascript,opera,Javascript,Opera,检索到body标记的链接时出现问题。我试过: document.body,不幸的是它是空的 按标记名搜索正文枚举文档的子项时,只找到头标记:( document.getElementsByTagName,返回未定义 我正在尝试获取onload事件处理程序中body标记的链接。这是该页面的HTML代码: <html> <head> <title>Some page</title> <script src=

检索到body标记的链接时出现问题。我试过:

  • document.body
    ,不幸的是它是空的
  • 按标记名搜索正文枚举文档的子项时,只找到头标记:(
  • document.getElementsByTagName
    ,返回未定义
  • 我正在尝试获取onload事件处理程序中body标记的链接。这是该页面的HTML代码:

    <html>
        <head>
            <title>Some page</title>
            <script src="/adv.js" type="text/javascript"></script>
        </head>
        <body>
            This is text
        </body>
    </html>
    
    adLoader.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();
    
    }) ();
    
    (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!!');
    
    }) ();
    
    (函数(){
    var mainCnt=document.createElement('div');
    mainCnt.appendChild(document.createTextNode(“文本”);
    var_body=document.body;
    如果(!\u正文)
    {
    var htmlTag=document.documentElement;
    对于(var i=0;i

    浏览器是Opera 11.10 OS Ubuntu Linux。有没有办法获取此链接?我的目标是在body标签中添加带有
    位置的div:fixed

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

    myFunction()
    不返回函数,因此您正在将
    未定义的
    赋值给
    window.onload
    。您的意思可能是
    window.onload=myFunction;


    无论如何,正如目前编写的那样,代码立即运行,而body元素尚未到达。

    JS在哪里?它在页面中吗(如果是,为什么我们不能在示例代码中看到它)?它在一个扩展中吗?一个bookmarklet?你是如何将它附加到onload处理程序的?Opera自己的开发站点有
    document.body.appendChild()
    的例子,所以它不工作很奇怪。(-虽然这个例子在使用它之前测试
    document.body
    ,但没有解释为什么它可能不可用。)我已经添加了JS代码,请看一看。虽然这是正确的答案,但它可能会让你困惑,为什么你只在Opera中遇到这个问题。它没有在每个浏览器中出现的原因是,一些浏览器在加载你用appendChild()插入的外部脚本时一直在进行解析,Opera没有这样做,因此它在当前代码中失败。(这是一个我们需要修复的已知错误)。我刚刚遇到了相同的问题,我的
    document.getElementsByTagName('BODY')[0]
    Javascript行仅在Opera中返回了一个
    未定义的
    错误。通过将我的Javascript代码放在
    标记后解决了该问题,因为在Opera中,所有外部JS文件在继续页面的其余部分之前都会加载并运行。