bodyタグへのリンクの取得に問題があります。私が試した:オペラのDocument.body
document.body
を、文書のチャイルズを列挙、それが唯一のheadタグ:(document.getElementsByTagName
見つかっている間、残念ながらそれはtagNameをすることにより- 検索体がnullの場合、undefinedを返す
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
のソースコード: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!!');
})();
ブラウザはOperaの11.10 OS Ubuntu Linuxのです。このリンクを取得する方法はありますか?私の目標はposition:fixed
のdivをbodyタグに追加することです。
JSコードを添付してください – yoavmatchulsky
JSはどこですか?ページの内側にあるのですか(もしそうなら、あなたのサンプルコードでそれを見ることができません)?拡張機能ですか?ブックマークレット?あなたはそれをどのようにonloadハンドラにアタッチしていますか? – Quentin
Opera独自の開発サイトには 'document.body.appendChild()'の例があるので、動作しないのは奇妙です。 (http://dev.opera.com/articles/view/introduction-to-user-javascript/ - この例では 'document.body'をテストしていますが、なぜそれが利用できないのかを説明せずにテストしています) – nnnnnn