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