NN3のJavaScriptバグについて

[上に] [前に] [次に]
\n 1999/04/16(金) 00:34:10
どなたか知っている方がいましたらお教えください。
以下のソースの時、Win版ネットスケープ3(3.01)ではスクリプトが
バグって"文字列"が表示できません。それだけならいいのですが、
文字列でもない画像でもない表示がでてしまいます。

TABLEが一つならいいのですが、2つ以上のときに起こるようです。
document.write("文字列<" +"BR>");としてもダメでした。

この現象を回避する方法をご存知のかた、またはこの問題に関する
情報を知っている方がいましたら、何でもいいので教えてください。

<html><body>
<table><tr><td>
<table><tr><td>

<script language=javascript>
<!--
document.write("文字列<BR>");
//-->
</script>

</td></tr></table>
</td></tr></table>
</body></html>
他のバージョンだと起こらないとか、MacやUNIXでは起こらないとかでも
かまいません。
また、この現象を確認できた方のブラウザバージョンとOsを教えてもらえ
れば幸いです。
よろしくお願いいたします。

おぱく堂 1999/04/16(金) 01:02:03
そういえば、自分もかつてそのバグ(?)に出会ったことあります。
環境は Win95+NN3.01でした。
document.write('<tr><td>文字列</td></tr>')とか、一列まるごと
でやって大丈夫だったような記憶がありますが、それが本当に正しい
解決策だったのかどうかは分かりません。確実じゃなくてごめんなさい。

みんこ 1999/04/16(金) 09:29:22
まあほんとう。
今色々やって遊んでます。MacNN3.01です。

テーブルタグではさむと
document以降がまるまる出力されて、その後に
本来出て欲しい表示も出ます。
document.write("文字列<BR>"); 文字列
こんなかんじで。

テーブル丸ごとか
最初の<table>だけ外に出して<tr>以降のタグを
スクリプトに突っ込んだらちゃんと出ます。

\n 1999/04/16(金) 15:43:08
おぱく堂さん、みんこさんありがとうございます。
#う〜むMac+NN3.01でも起こるのかぁ。

お二人のおっしゃるとおりテーブルとかを丸ごとスクリプトで書き
出すと問題無く表示されるのですが、事情があってテーブルが深く
ネストしている部分で使用したいので回避方法を探しています。

<NOSCRIPT>も併用して使うので、スクリプトOFFの場合も考慮した
いのです。


引き続き情報をお待ちしています。
みなさまよろしくお願いいたします。

無責任官庁 1999/04/16(金) 16:00:54
スクリプトを別ファイルにしたら、ちゃんと出るようですけど。
(当方はWin+NN3で確認)
↓こんな感じで。
-----HTML-----
<html><body>
<table><tr><td>
<table><tr><td>
<script language="JavaScript" src="test.js">
</script>
</td></tr></table>
</td></tr></table>
</body></html>
------------------------
------test.js-----------
document.write("文字列<BR>");
------------------------

いかが?

みんこ 1999/04/16(金) 16:15:47
どれどれ。おお。

>無責任官庁たいらーさん
MacNNでもちゃんと表示できました。

\n 1999/04/16(金) 16:52:04
なるほど!外部ファイルとは気が付きませんでした!
無責任官庁さんありがとうございます。
NN3では回避できました。

....ところがいろいろ調べていたら今度はWIN95+IE3で以下の状況
でブラウザ落ちします....(T_T)

####### test.html ##########
<html><body>
<script language="JavaScript" src="test.js"></script>
</body></html>
####### test.html ##########

####### test.js ##########
document.write("スクリプト文字列<BR>");
####### test.js ##########

他のマシンにIE3が無いのでマシンのせいなのか、ブラウザのバグ
なのかは不明ですが。
IE3とNN3に足を引っ張られる...
こちらを起てるとあちらが起たずです。

無責任官庁 1999/04/16(金) 18:07:00
う〜ムカつくなぁ〜IE3のヤツめ〜(>_<)/
とりあえず、理由はともかく以下のようにしたら、
IE3・NN3いずれも表示できました。
-----------------HTML--------------------
<html>
<body>
<table><tr><td>
<table><tr><td>
<script language="JavaScript1.1" src="test.js">
</script>
<script language="JavaScript">
<!--
document.write("あああ");
//-->
</script>
</td></tr></table>
</td></tr></table>
</body>
</html>
------------------------------------------
(test.jsの中身は一緒っす)
------------------------------------------
JavaScript1.1はIE3は認識しないので、JavaScriptとある所
を処理します。
(IE3は、src="〜"を認識しないのよ)
ただ、このままだとIE3以外のブラウザは、両方とも処理してしまうので、
"JavaScript"の中で、IE3の時だけ出力するようにしたら良いでしょう。
"JavaScript1.1"を処理したあとだと、何故かNN3もまともに
なってしまいます。(T_T)

・・・にしても・・・
なんか、もっとイイ方法ないのかなぁ・・・(T_T)
これが私の限界です。

\n 1999/04/16(金) 19:39:25
無責任官庁さんありがとうございます。
う〜ん....この方法だとIE3とNN3と4以降とさらに<NOSCRIPT>と..
非常に複雑になってしまいますね。

>なんか、もっとイイ方法ないのかなぁ・・・
テーブル内に記述するタグの量が多いので、残念ながらちょっと
現実的でないです。
外部スクリプトのアイディアありがとうございました。

最初のスクリプトでのエラーが発生する環境を知りたいので、
もう少しこのまま情報をお待ちしています。
みなさまよろしくお願いします。

1999/04/16(金) 23:01:02
<script language="JavaScript" src="test.js">
<!--
document.write("文字列");
//-->
</script>
------------------------------------
でいいのでは無いでしょうか〜

src属性に対応してるUAはsrcを記述すると、
<script></script>の間を無視すると思いましたけど?

<NOSCRIPT>ってIE3xは対応してないみたいでし。
どっとはらい

akko 1999/04/17(土) 05:33:09
私が使ってるmac版のnn3.01では、
jsファイルの記述そのものが
画面にばばっと表示され、そこで立ち往生しますよ。

あれ?と思ってブラウザを再インストールしてみたけど
同じでした。
それでしかたなく分岐スクリプトを書いています。
当然表示が遅いです.....

\n 1999/04/17(土) 13:24:50
るさんありがとうございます。
> <script></script>の間を無視すると思いましたけど?
IE3だと<script src="test.js">を指定すると<script>タグ内での
document.write("文字列");の行も無視されますので同じ内容を2つ
しなければならないです。
これをするならブラウザを区別した方が早いかも知れません。

><NOSCRIPT>ってIE3xは対応してないみたいでし。
っていうよりIE3の場合JavaScriptの止めかたが不明です。(^^;


akkoさん
みんこさんと同じ環境のようですね、これはOSのバージョンの違い
から来るのでしょうか。
ご報告感謝します。

もうちょっと状況を追いつめました。
document.write("文字列<BR>");
この様にタグを含めると画面がバグります。
とくに'>'が原因のようです。
>(IE3は、src="〜"を認識しないのよ)
と有りますが、面白い事に外部ファイルのソースによって、落ちたり
無視したりするようです。
さらに外部ソース内に'>'が出現すると落ちるのを確認しました。
他の方の参考までに。

しつこいですが、もう少しだけ情報をお待ちしています。
よろしくお願いします。

1999/04/17(土) 21:05:10
<script language="JavaScript">
<!--
document.open();
document.write("文字列<br>");
document.close();
//-->
</script>
----------------------------------
て、感じで
開いて閉じる様にしてみては如何でしょう?
意外にこれでイケるケースが在るようですが....

\n 1999/04/19(月) 12:20:09
[[解決]]
るさん度々ありがとうございました。
各ブラウザでの挙動は、外部ファイルを使っても使わなくても
各種動作にかなりのバラツキが有りました。

また、何かのバグを取り繕う方法では、各種ブラウザのコードを
別々に用意せねばならず、なかなかうまく行きませんでした。
2重テーブルの中での挙動は非常に不可解でした。

何よりMac+NN3.1で発生する事が分かったのは大きな事でした。
皆さんのアイディア、ご助言ありがとうございました。
この場を提供していただいた、とほほさんにも感謝しています。
ここで一応解決とさせていただきます。

[上に] [前に] [次に]