XMLをXSLを使ってブラウザに表示させるときに、外部JavaScriptを使ってブラウザ判定をして、ブラウザにあった外部CSSファイルを適用したいのですが、JavaScriptが効いてくれません。JavaScript自体はHTMLの状態で効果があったのですが、XSLで書き出すと効かないのです。原因と打開策を探しています。よろしくお願い致します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/06 12:17:55
  • 終了:--

回答(5件)

id:emurai No.1

emurai回答回数3ベストアンサー獲得回数02005/01/30 13:56:39

ポイント32pt

あの、どのようにして外部CSSを適用しているのでしょうか?

<?xml-stylesheet

<link

あとXSLでどのように書き出しているのですか?

id:buriki8

元となるxmlには

と記述しています。

変換用(仮)のxslファイルにはxmlのタグの後、

htmlのソースを書いておりまして、その中で

<title>タイトル</title>

<script language=”javascript” src=”../../css/style.js”></script>

のように記述しています。

2005/01/30 15:54:10
id:unno No.2

unno回答回数27ベストアンサー獲得回数02005/01/30 15:01:33

ポイント32pt

<script type=”text/javascript” src=”test.js”></script>

まず、外部ファイルにして呼び出すなど、問題の切り分けをしてみてください。

id:buriki8

ありがとうございます。

いろいろ試したところ、javascriptは動いているようなのですが、cssが適用されていないということがわかりました。javascriptの内容が間違っているのでしょうか?

function loadCSS(path){

var ua = navigator.userAgent.toLowerCase()

//--今回CSS処理するブラウザリスト

if(document.layers)return //n4は崩れるので使わない

var winie = ua.indexOf(’msie’)!=-1 &&

ua.indexOf(’win’)!=-1 //win-e3〜

var moz = ua.indexOf(’gecko’)=-1 //moz1〜

//デフォルトパスを./に設定する

if(!window.loadCSS.arguments[0]) path=’../../css/’

//cssファイル名用変数

var cssfile = path

//--ブラウザごとのCSSファイル

if (winie) cssfile += ’style_win_ie.css’

else if (moz) cssfile += ’style_win_mo.css’

else cssfile = ’’

var linktag = ’’

if(cssfile !=’’){

//各パス内のall.css

linktag +=’<link rel=”stylesheet” ’</p>

+ ’ type=”text/css” ’

+ ’ href=”’

+ path

+ ’all.css’

+ ’”>’

//ブラウザごとのcss

linktag +=’<link rel=”stylesheet” ’</p>

+ ’ type=”text/css” ’

+ ’ href=”’

+ cssfile

+ ’”>’

}

alert(”test”)

//出力

document.write(linktag)

}

loadCSS()

2005/01/30 16:01:21
id:izayoimizuki No.3

izayoimizuki回答回数302ベストアンサー獲得回数02005/01/30 19:49:07

ポイント32pt

多分XSLTで変換している限りDOMの観念を使わないと

変換後のXHTMLとJavaScriptが連携できないと思います。

DOMにはあまり詳しくないのでここまでしかいえませんが・・・

#XSLTが必要となるとMSIE4.X以降とMozilla1.0以降位しか無いわけで

#ブラウザごとに違うCSSを適用する理由があまりないように思いますが・・・

#Netscape4.XやMSIE3.0はXSLT自身に対応していないわけですし。

id:buriki8

ありがとうございます。

変換後のXHTMLとJavaScriptが連携しないということでしょうか?

DOMについてのページをさがしてみます。

2005/01/31 10:07:31
id:ikairoku No.4

ikairoku回答回数8ベストアンサー獲得回数02005/02/01 16:58:13

ポイント32pt

ブラウザの判定とか省いてますが、

function loadCSS(){

var link = document.createElement(’link’);

var head = document.getElementsByTagName(’head’)[0];

link.rel = ’stylesheet’;

link.type = ’text/css’;

link.href = ’all.css’;

head.appendChild(link);

}

<body onload=’loadCSS()’>

でどうでしょう。

id:buriki8

ありがとうございます。外部javascriptに追加して使うファンクションですね。javascriptも勉強中です。試してからまたご報告します。

2005/02/02 23:33:38
id:amanoftaste No.5

amanoftaste回答回数42ベストアンサー獲得回数02005/02/06 15:22:04

ポイント32pt

http://www.microsoft.com/japan/msdn/columns/corner/corner0127200...

ご指定のページが見つかりません

下記URLに面白そうなことが書いてあります。

これに、ブラウザ判別する部分を付け加えるというのはどうでしょう。

HTMLファイル等が、XMLとXSLを取り込む形になるので、

何とかなりそうな気がします。

id:buriki8

すみません。自己解決いたしました。

javascriptの記述が間違っておりました。

//デフォルトパスを./に設定する

if(!window.loadCSS.arguments[0]) path=’../../css/’

この部分を

if(!window.loadCSS.arguments.length) path=’../../css/’

に変更することで読み込んでくれました。

お騒がせいたしました。

みなさまありがとうございます。

2005/02/08 00:22:48

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません