質問
2009年3月4日水曜日 2:24
IIS5.1(Windows XP SP3)
Visual StudioでjQueryが正式サポートされたようなので、Visual Web Developper 2008 Expressを使用して
jQuery UI Tabにてタブ表示ページを作成したのですが、そのページ(Default.htm)を、ちょっとややこしいのですが、
http://WebServer/ や
http://WebServer/Directory/ に
配置するとどうもJavaScriptが実行されていない感じです。
ちなみに、仮想ディレクトリを作成して
http://WebServer/[VirtualDirectory]/ に
配置すると正しく実行されます。
また、上記のダメなパターンでも、html内に直接埋め込んだJavaScriptは実行されているみたいです。
要するに<script type="text/javascript" src="jquery.js"></script>の部分が
うまく実行されていないのではないかと推測します。でも、クライアントのキャッシュを見てみるとjquery.jsは
ダウンロードされているのです。
Web Serverの設定は[規定のWebサイト]も[VirtualDirectory]も
アプリケーションを作成し、
実行アクセス権 スクリプトのみ
アプリケーション保護 中(プール)
に設定してあります。
どうすればいいのかお分かりになる方がいらっしゃればご教示いただきたいのですが、よろしくお願いします。
すべての返信 (5)
2009年3月4日水曜日 6:25 ✅回答済み
こんにちは。
「・・・されていない感じ」 「・・・みたい」 という書き方ですが、いまひとつ状況の把握がうまく行っていないのでしょうか。。。
まずは、実際にファイルが落ちてきているのかどうかなど、状況を把握するのが第一手だと思います。
IIS のアクセスログを見るなり、Fiddler や Firebug を使って JavaScript が本当にダウンロードできていないのかどうか確認されると良いと思います。もし、 404 が返ってきていましたら、ディレクトリ等の設定が違うのでそれを直せばよいと思います。
ちなみに、IIS の実行権限のスクリプト、というのは、サーバーサイドのスクリプトのことであって、クライアントサイドの JavaScript のことではありません。ですから、今回はあまり関係が無いと思います。
ご参考になりましたら幸いです。
だどさん http://keicode.com/
2009年3月7日土曜日 6:26 ✅回答済み
こんにちは。
うーん、なんでしょうねぇ。
サーバーの位置が違えば、うごく、動かないということだと、パスが通っている通っていないということが問題のようにも思えるのですが、、、そういうことではないんですよね?(確認されてますよね?)
スクリプトでは何かエラーは出ていないでしょうか?
IE より Firefox の方がいろいろ詳しく調査できると思います (Firebug や Error Console の出力に何か手がかりはないでしょうか?)
ご参考になりましたら幸いです。
だどさん http://keicode.com/
2009年3月4日水曜日 7:15
だどさん
レスありがとうございます。
サーバーのログで確認したところ、+.jsファイルは正常に配信されていました。
問題のHTMLの内容は以下のようなコードです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--タブ機能の動作に必要なスタイルシートとJavaScriptコードをインポート-->
<link type="text/css" href="theme/ui.all.css" rel="Stylesheet" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript">
// ページ・ロード時にタブ機能を有効化
$(document).ready(function() {
// setTimeout('setTab()', 2000)
});
function setTab() {
$('#tabs').tabs({ selected: 0 });
}
function Button1_onclick() {
setTab();
}
function Button2_onclick() {
alert('Button2が押されました。');
}
</script>
<title></title>
</head>
<body>
<!--タブパネル/タブ全体を<div>タグで定義-->
<div id="tabs">
<!--タブ部分を<ul>リストとして定義-->
<ul>
<li><a href="#init"><span>初期表示</span></a></li>
<li><a href="#change"><span>同一内での切り替え</span></a></li>
<li><a href="Page1.htm"><span>htmlページへのリンク</span></a></li>
<li><a href="Page2.aspx"><span>aspxページへのリンク</span></a></li>
</ul>
<!--個々のタブパネルの内容を<div>タグで定義-->
<div id="init">
初期表示です。
</div>
<div id="change">
切り替わりました。
</div>
</div>
<p>
<input id="Button1" type="button" value="button" onclick="return Button1_onclick()" /></p>
<p>
<input id="Button2" type="button" value="button" onclick="return Button2_onclick()" /></p>
</body>
</html>
投稿
これで、Button1をクリックしたらTab表示になるというものです。
ここで、<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
の部分をやめて、各jsの内容をインラインですべて貼り付けて実行してみましたが結果は同じ(サーバーのルート配下ではダメで、仮想ディレクトリだと正常に実行できます。)
これで分かったことは配信されているかされていないかではなく、やはりドキュメントの配置されている位置によってJavaScriptの挙動が変わっていると思われるのです。
ちなみにまったく別のJavaScript(上記コードのalert('Button2が押されました。');)だとルート配下でもうまくいきます。
2009年3月9日月曜日 1:25
だどさん
再度のレスありがとうございます。
原因が分かりました。
非常に恥ずかしいお話なのですが、サーバーのルートフォルダにjQuery UIの一部の必須ファイルのを置くのを忘れていました。
仮想ディレクトリ=開発環境だったので、そちらにはすべてのファイルがたまたま入っておりました。
firefoxでも試していたのですが、IEと同じ現象で、試行錯誤していたときに、再度jQuery UIのアーカイブを覗いていてふと気付きました。
お騒がせいたしました。
2009年3月9日月曜日 8:48
コリン星人 さん、
こんにちは!
フォーラム オペレーターの服部 清次です。
今回は自力で問題の原因を突き止められたとのことですが、勝手ながら、私の方で、問題解決の糸口となりそうな情報を提供してくださった だどさん の回答に [回答としてマーク] のチェックを付けさせていただきました。
コリン星人 さんと同じような問題に遭遇された他の方々にも、ぜひこちらの情報を参照していただきたいと思いますので! (^^)
また何か質問や疑問がありましたら、ぜひ TechNet フォーラムに投稿してください。
これからもよろしくお願いします。
それでは、また! (^_^)/
_______________________________________
マイクロソフト株式会社 フォーラム オペレーター 服部 清次