- PR -

xsl+javascriptがfirefox, netscapeで動かない。ieでは動く。

1
投稿者投稿内容
会議室デビュー日: 2007/08/09
投稿数: 4
投稿日時: 2007-08-09 05:56
ファイル:
http://web.umr.edu/~mi9p8/temp/test011__doc1+2_all.xml
http://web.umr.edu/~mi9p8/temp/test011__doc2.html
http://web.umr.edu/~mi9p8/temp/test011__doc1.html
http://web.umr.edu/~mi9p8/temp/test011__combine.xsl
http://web.umr.edu/~mi9p8/temp/test011__fold.js
(以下「http://web.umr.edu/~mi9p8/temp/test011__」の部分は省略します。)

使用ブラウザ:
Firefox 2.0.0.6
Netscape7.1
IE6 SP2

問題の状況:
1)doc2.htmlを開くと、fold.jsの機能も含めて、上記いずれのブラウザでも正常に表示できます。
2)しかし、doc1+2_all.xmlを開くと、IEでは正常に動作しますが、FirefoxおよびNetscapeでは、読み込み中のままで、まったく表示されません。
3)そこで、doc1+2_all.xmlのxslを書き換えて、fold.jsを読み込まないようにすると、いずれのブラウザでも正常に表示できます。

この状況から、おそらく、xslに<script>タグを書き込ませているあたりが問題なのだろうと思うのですが、原因が見つけられないので、アドバイスをいただければと思っております。

- fold.jsは、html文書内の項目を折りたたむためのスクリプトです。class="js_open"の属性をもつ要素を折りたたみます。(私が作ったものではないのですが。)
- doc2.htmlは、単純なhtmlで、fold.jsを読み込んでいます。「purple is black」をクリックすると次の段落の折りたたみができます。
- doc1+2_all.xmlを開くと、combine.xslの作用で、サブ文書、doc1.htmlとdoc2.htmlを読み込んでまとめて表示します。サブ文書は<h5>のタイトル行(「HTML Document 2」など)をクリックすると折りたためるようになっています。

よろしくお願いします。
会議室デビュー日: 2007/08/09
投稿数: 4
投稿日時: 2007-08-11 13:24
解決しました。Firefoxでは、スタイルシートの処理を行った後にjavascriptが呼ばれるので、javascriptが書き込む文字列が、文書の内容を上書きしていることが原因でした。
Internet Explorerでは、逆に、まずjavascriptが呼ばれ、それからスタイルシートが呼ばれるようです。


1

スキルアップ/キャリアアップ(JOB@IT)