function openWin(pgAd,pgNam,imgAd,w,h,topmargin,leftmargin){ w=window.open(pgAd,pgNam,"width="+w+",height="+h+",top="+topmargin+",left="+leftmargin+",toolbar=no,locationbar=no,directories=no,status=no,munubar=no,scrollbars=no, resizable=no");
<script language="JavaScript"> <!-- function onMenu1(){document.all.menu1.style.visibility="visible";} function offMenu1(){document.all.menu1.style.visibility="hidden";} //--> </script>
var direction =event.keyCode switch(direction) { case 39: document.write("移動します"); URL=C\My Documents\ppi break case 37: document.write("移動します"); URL=C\My Documents\mmp break default: break }
IE5.5とNN4とNN6で動作確認中のプログラムが、DOCTYPE宣言が <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> の場合は問題無く動いたのに、 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"> にすると動かなくなりました。 IE6は未確認なのですが、NN6にもDOCTYPEスイッチがあるのですか? IE6の場合にはdocument.compatMode=="CSS1Compat"で条件分岐すれば 標準準拠モード(Strict)と互換モード(Transitional)に振り分けられるみたいなのですが、 NN6ではどうすればいいのですか。 また振り分けた場合の記述でどこをどう変更すればStrictでもちゃんと動くのか……。 ちなみに問題のプログラムは下記の通り。 ===================== this.ver=navigator.appVersion; this.dom=document.getElementById?1:0; var IE=(document.all)?1:0; var NN6=(this.dom && !document.all && parseInt(this.ver) >= 5) ?1:0; var NN4=(document.layers && !this.dom)?1:0;
function alwaysTop() { vy=NN4?".top=":".pixelTop="; vx=NN4?".left=":".pixelLeft="; y=IE?"document.body.scrollTop":"window.pageYOffset"; x=IE?"document.body.scrollLeft":"window.pageXOffset"; yy=eval(y)+0; xx=eval(x)-0; object=NN6?document.getElementById("navbar").style:IE?"navbar.style":NN4?"document.navbar":0; if (IE||NN4){eval(object+vy+yy);eval(object+vx+xx);} else if (NN6){object.top=yy;object.left=xx;} } if(NN4||IE||document.getElementById){ setInterval("alwaysTop()",50) } //スタイルシートでdiv#navbar{position:absolute;}を指定。
>>589>>591-2 Windows版Netscape Communicator 4.75で確認しました。 position: absolute;も要素にIDを振って外部スタイルシートで指定済みです。 変ですね。今は下の形で実行してます。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 var D = document; var DOM=D.getElementById?1:0; var Opera=(navigator.userAgent.indexOf("Opera")!=-1 && DOM)?1:0; var IE6s=((navigator.appVersion.indexOf("MSIE 6")>-1) && DOM && D.compatMode=="CSS1Compat")?1:0; var IE=(D.all && !Opera)?1:0; var lteIE4=(IE && !DOM)?1:0; var N6=(DOM && !D.all && !Opera)?1:0; var NN4=(document.layers && !DOM && !Opera)?1:0;
function alwaysTop() { if(lteIE4) {document.getElementById = function(id){ return document.all[id];}}; var unit=NN4?'':'px';//NN6strict必須 var top=lteIE4?"pixelTop":"top"; var left=lteIE4?"pixelLeft":"left"; y=IE6s?D.documentElement.scrollTop:IE?D.body.scrollTop:window.pageYOffset; x=IE6s?D.documentElement.scrollLeft:IE?D.body.scrollLeft:window.pageXOffset; object=NN4?document.navbar:IE?navbar.style:document.getElementById('navbar').style; if (document.images){object.top=y+unit;object.left=x+unit;}; } if(NN4||IE||DOM) {setInterval("alwaysTop()",50);} // #navbar{position: absolute; z-index: 5;}
このHTMLファイルを開くと、普通は問題無くスクリプトが実行されるのですが、 メニューからファイル>オフライン作業を選択すると、なぜか実行されなくなります。 設定で「JavaScriptのエラーを告知する」にして再読込(更新)すると次の警告が。 Error: name: ReferenceError message: Reference to undefined variable: No such variable 'Attention'
HEAD部分 <SCRIPT type="text/javascript"> <!-- function Count() { var date = new Date(); //Dateオブジェクト var now = date.getTime(); //現在までのミリ秒数 var mil = Date.parse("January 1, 2002 00:00:00"); //2002/01/01 00:00:00までのミリ秒数 var count = (mil - now) / 1000; //ミリ秒の差を1000で割る count = Math.floor(count); //count以下の最も近い整数に丸める countDown.innerHTML = count; //IDがcountDownのタグ要素を置きかえる
timerID = setTimeout('Count()', 1000); //1000ms間隔で再帰的に自分を呼び出す } // --> </SCRIPT> BODY部分 <SCRIPT LANGAGE="JAVASCRIPT"> if (countDown >= 0) { document.write("<SPAN id=",countDown,"></SPAN><br>"); document.write("A HAPPY NEW YEAR 2002年">); } else { if (countDown == 0) document.write("A HAPPY NEW YEAR 2002年"); } else { document.write("A HAPPY NEW YEAR 2002年"); } </SCRIPT>
<script language="javascript"> function countDown() { var date = new Date(); var now = date.getTime(); var target = Date.parse("January 1, 2002 00:00:00"); var count = Math.floor((target - now) / 1000);
if (count <= 0) { document.all.countDown.innerHTML = "A HAPPY NEW YEAR 2002年"; } else { document.all.countDown.innerHTML = count; setTimeout("countDown()", 1000); }
マウスの座標取得で、いろんなサイトを参考にすると function mousecursor(evt){ などと定義した後、 X = event.x; などとしていたり、 X = document.body.scrollLeft+event.clientX; などと描いてあるところがありますが、上の二つの 違いって大きいですか?
var files = new Array("tana1-3.gif", "tana3-1.gif", "hana3-1.gif", "dennki.gif", "bed1.gif"); function changeImage(imgnum){ for (var i = 0; i < document.images.length; i++) document.images[i].src = files[imgnum]; }