下記の関数で、大抵のブラウザでテキストの切り替えが出来るようになったのですが、NetScapeだけ、表示できません。
原因は何でしょうか?
※ちなみに、下記のソースのFireFoxをMozillaに変えても無理でした。
function insertText(area, value){
if (navigator.userAgent.indexOf("Firefox") > -1) {
document.getElementById(area).textContent = value;
}else{
document.getElementById(area).innerText = value;
}
}
チェックするときの、文字列は Netscape だったでしょうか?
JavaScript は 大文字、小文字を識別するので NetScape だと一致しないと思います。
デバッグ時は、チェックの始めに
alert( navigator.userAgent );
等で確認するのも有効な手段だと思います。
Netscape7.1で試しましたが、textContentもinnerTextも使えないようです。(というか、要素のプロパティとして存在していない)
Netscapeでも動作させるためには、innerHTMLを使うのが手っ取りばやいです。ただ、タグ等がエスケープされないので、innerTextと同じ挙動にしたい場合は以下のようにします。
<html> <head> <script> <!-- function insertText(area, value){ var elem = document.getElementById(area); elem.innerHTML = " "; elem.firstChild.nodeValue = value; } //--> </script> </head> <body> <div id="test"></div> <input type="button" value="test"onclick="insertText('test', '<b>AAAA</b>');"/> </body> </html>
参考になれば幸いです。
解決しました!
ドモです!
ブラウザのバージョンというよりは、JavaScript の方言の問題でしょうか。
下記では IE, FireFox, Netscape で動作しました。
<html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> <!--- function insertText(area, txtValue){ document.getElementById(area).innerHTML = txtValue; } // ---> </script> </head> <body> <form name="myForm"> <p id="myText">---</p> <input type="button" name="myButton" value="Click Me!" onclick="insertText( 'myText', 'Hi there!!' );"> </body> </html>
実際の area にあたる部分が明示されていないのでなんともいえませんが、ブラウザによって、使えないプロパティもあるのでその辺りを確認してはどうかと思います。
一応は、判定は間違ってなかったと思います。
意図した条件分岐に処理は行ってるので。
うーん。。。