プロが教えるわが家の防犯対策術!

JavaScriptで文字を一文字ずつ表示するサンプルを見つけ、使おうとしたところdocument.allが使われていた為、ネスケで対応できない事が分かりました。ネスケ4.7で対応するようにするにはどのように変えたらいいのか教えて頂きたく宜しくお願いいたします。
<SCRIPT Language="JavaScript">
<!--
var msg="Welcome!!";
i=0;
function Start(){
if(i<=msg.length){
if(document.all){
myText.innerHTML = msg.substring(0,i);
}else if(document.layers){
document.myText.document.open();
document.myText.document.write(msg.substring(0,i));
document.myText.document.close();
}
i=++i;
setTimeout("Start()",200);
}else{
i=0;
setTimeout("Start()",1000);
}
}
// -->
</SCRIPT>
</HEAD>
<BODY onLoad="Start()">
<DIV id="myText"></DIV>
</BODY>
宜しくお願い致します。

A 回答 (2件)

コメント拝見しました。


そうですよね、Firefox入れなきゃね。

では、こんなソースではいかがでしょうか。
(長いです)
【header】
<SCRIPT LANGUAGE="JavaScript">
<!---
var st = new Array();

// メッセージ設定 \nが改行です。
st[0] ="ここにメッセージ\n"+
"ここにメッセージここにメッセージ"; // 複数の場合は、st[?]の数字に0から始まる連番を。

// 文字出現のスタイルシート。
var typeStyle = "font-size:10pt; line-height:15px; color:#000000; font-weight:nomal;"; // 左から文字サイズ、行間、色、字の種類
var typeSpeed = 100; // 次の文字を表示するまでの待ち時間。1000=1秒
var tugi = "_"; // 次の文字の所に出力するキャラクター★とかにすると面白いです。
var loop = true; // ループ設定。する:true しない:false
var msgWait = 1000; // 次のメッセージを表示するまでの待ち時間。1000=1秒

_dom=(document.all?3:(document.getElementById?1:(document.layers?2:0)));

function writeTypeMsg(mes) {
if (_dom == 1) {
var div = document.getElementById("type");
while(div.hasChildNodes()) div.removeChild(div.lastChild);
var range=document.createRange();
range.selectNodeContents(div);
range.collapse(true);
var cf=range.createContextualFragment(mes);
div.appendChild(cf);
}

if (_dom == 2) {
var div = document.layers["typeN4"].layers["type"];
div.document.open();
div.document.write(mes);
div.document.close();
}

if (_dom == 3) document.all("type").innerHTML = mes;
}

charsuu=0;

if (("A".length) == 1) charsuu = 1;
else charsuu = 2;
cct = 0;
msgNo = 0;
mct = st[0].length;

function typing(){
cct += charsuu;
if (cct > mct) cct = mct;
Typeout = '<SPAN style="' + typeStyle + '">'
+ st[msgNo].substring(0,cct).replace(/\n/g, '<BR>')
+ (cct < mct ? tugi : '')
+ '</SPAN>';
writeTypeMsg(Typeout);
if (cct < mct) setTimeout('typing()', typeSpeed);
else {
msgNo = (msgNo >= st.length-1) ? 0 : msgNo + 1;
mct = st[msgNo].length; cct = 0;
if (!(!loop && msgNo == 0)) setTimeout('typing()', msgWait);
}
}

window.onload = typing;

// --->
</SCRIPT>

【body】
<ILAYER name="typeN4" width="500" height="200">
<DIV id="type" style="position:absolute; width:500px; height:200px; clip:rect(0px 500px 200px 0px);">
</DIV>
</ILAYER>

IE6、ネスケ4.7、ネスケ7、Firefox、Opera動作確認済みです。
しかし、最近はあまり4.7は動作確認の視野に入れないところが増えてきましたね。
それを言ったら、もうきりがありません。
ネスケ4.7だったら、ネスケ3はどうするのか、IEだって5.5とか使ってる人だってまだいるでしょうし、ブラウザは多数あります。
それに、MACのSafariの動作確認、MACのIE、ネスケ…もうどこまで行くのか!と言ったことになります。
この例は極端ですが、WEBサイトの目的によって、ある程度一般的なブラウザに絞って動作確認することも考えておいた方がいいと思います。

まずは、上記のソース試してみてください。
    • good
    • 0
この回答へのお礼

凄いです!このソースでこんなに沢山のブラウザに対応できるのですね。感動しています。
確かにブラウザの動作確認の対象を考えたらきりがないですよね。今回はIE6、ネスケ4.7、ネスケ7、Firefoxのみでの動作確認が取れればOKとします。ソースに説明文がありとても助かりました。
また、Operaというブラウザについては今回初めて知りました。
どうゆうものなのかいろいろ勉強してみます。ありがとうございました。

お礼日時:2007/02/15 15:36

こんにちは。



ネスケ4.7ですか~…。
表示させるには、
<DIV id="myText"></DIV>
これに、
style="position:absolute;visibility:visible;"
を追加すれば表示します。

…が、このソースだとFirefox表示されませんけど、それはいいのでしょうか?
ネスケ4.7をわざわざ視野に入れて動作させるのなら、Firefoxは外しちゃだめだろう!と、思うのですが。
    • good
    • 0
この回答へのお礼

nyanko_2003さん、早々にご対応ありがとうございます。
そうですね。確かにFirefoxは外しちゃまずいですね。
Firefoxの存在をつい最近知ったもので、その件には頭が回りませんでした。これからはFirefoxの存在を忘れてはいけませんね。
ご指導ありがとうございます。
つきましては、IE、ネスケ4.7~、Firefoxに対応する方法をご存知の方いらっしゃいましたら、お力を貸して頂きたく宜しくお願い申し上げます。

お礼日時:2007/02/13 10:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!