• 締切済み

マスターページでのJavaScrioptファイル

マスターページとコンテンツページ(aspxファイル)のディレクトリ階層が異なる場合、マスターページにJavaScriptファイルの指定を行うと、生成された画面のソースを見ると、マスターページからの相対パスになっており、JavaScriptのメソッドを実行できません。 どうすれば、コンテンツページからのパスで生成されるようにできますか? ■階層 root ┗Script ___Script.js ┗マスターページ ___マスターページ.master ┗コンテンツルート _┗aspxファイル ______コンテンツ.aspx ■マスターページ <head id="Head1" runat="server"> <script type="text/javascript" src="~/Script/Script.js" charset="Shift_JIS"></script> </head> ■生成されたhtml <head id="Head1" runat="server"> <script type="text/javascript" src="../Script/Script.js" charset="Shift_JIS"></script> </head> 希望しているコード <script type="text/javascript" src="../../Script/Script.js" charset="Shift_JIS"></script>

みんなの回答

回答No.1

ASP.NET 2.0で同じようなページ構造にして試してみましたが、相対パスどころか"~/Script..."がそのままブラウザに送られてきました…。 scriptタグはパス変換の対象になっていない様子。 (このあたりは設定等で変更できるかもしれませんが調べてません。) 解決策としては、マスターページのInitイベントでヘッダにscriptタグを追加する方法があります。 VBの場合: Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Dim tagScript As New HtmlControls.HtmlGenericControl("script") tagScript.Attributes.Add("type", "text/javascript") tagScript.Attributes.Add("src", Me.ResolveClientUrl("~/Script/Script.js")) tagScript.Attributes.Add("charset", "Shift_JIS") Me.Page.Header.Controls.Add(tagScript) End Sub C#の場合: 私はC#書けないので上記コードからC#用に書き換えてください。

e_zenchan
質問者

お礼

ありがとうございました。 教えていただいた方法を参考に <script type="text/javascript" src='<%= Me.ResolveClientUrl("~/Script/Script.js") %>' charset="Shift_JIS"></script> で マスターページからのパスではなくコンテンツページからのパスで表示することができました。 C# なので Me ではなく、this にしました。

関連するQ&A

  • 実行するスクリプトを時間で切替えたいが・・

    以下のようにHTML内に埋め込んで、時間で実行するスクリプトを切替えたいと思っていますが、何故か上手くいきません。 詳しい方がいましたら、ご教授下さいませ。 m(__)m <script language="JavaScript"> <!-- TimeH = (new Date()).getHours(); if (TimeH>=18) { <script language="Text/JavaScript" type="Text/JavaScript" src="./JS/xxx.js" charset="shift-jis"></script> } else if (TimeH<4) { <script language="Text/JavaScript" type="Text/JavaScript" src="./JS/yyy.js" charset="shift-jis"></script> } else { <script language="Text/JavaScript" type="Text/JavaScript" src="./JS/zzz.js" charset="shift-jis"></script> } // --> </script>

  • javascriptのalertで文字化けが解消されません。(外部js

    javascriptのalertで文字化けが解消されません。(外部jsファイル読込による) htmlファイル <meta http-equiv="Content-Script-Type" content="text/javascript"> <script language="JavaScript" src="**/**.js" charset="shift_jis"></script> いろいろ調べまして、charset="shift_jis"を指定したり、utf-8にしましたがうまくいきません。 jsファイル function testalert() { alert('テスト'); } ご教授をよろしくお願いします。

  • <title></title>間になぜかタブコード

    ASPを勉強中です。 WinXp SP3 + IE8 + IIS5.1 + VS2010 で勉強しています。 以下の記述を行っているのですが、なぜか<title>~</title>の間にタブコードが挿入されてしまいます。 マスターページのヘッダ部分は <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <asp:ContentPlaceHolder ID="IncludeContent" runat="server" /> <script src="<% =ResolveUrl("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script> <script src="<% =ResolveUrl("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script> <script src="<% =ResolveUrl("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript"></script> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> </head> 実際のASPページの記述は <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">XX</asp:Content> と記述しているのですが、実際の出力時にはなぜか <title> \tXX </title> と XX の手前にタブコード(\t)が生成されてしまいます。 これを何とか削除したいのですが・・・・ 何か記述を間違えていますか?

  • HTMLファイルのインクルードで文字化けしてしまう

    下記のサイトを参考にHTMLファイルのインクルードを試したところ、 インクルードされた側のHTMLで文字化けしてしまいます。 http://tani.dank-hearts.com/2008/03/javascripthtml.html ↓の文字コード指定を記述してもダメでした。。。 <meta http-equiv="content-type" content="text/html;charset=shift_jis"> <script type="text/javascript" src="js/ajaxcodedisplay-or.js" charset="shift_jis"></script> 原因がわかる方いらっしゃいましたら、 ご教授お願いいたします。

    • ベストアンサー
    • HTML
  • 文字表示の設定方法について

    このサイトの文字化けについての質問です。 http://www.hempkitchen.jp/ 左メニューに、twitterヴィジェットが表示されていたのですが、先日から表示がされなくなり 原因をリサーチしていた時に <meta http-equiv="Content-Type" content="text/html; charset=shift_jis">を <meta http-equiv="Content-Type" content="text/html; charset=utf-8">に変更したら、 twitterヴィジェットは表示されたのですが、 jsで管理しているメニューが文字化けしてしまいました。 下記3つのjsファイルで管理しているメニューです。 <script language="JavaScript" src="hempkitchen.js"></script> <script language="JavaScript" src="js/footer1.js"></script> <script language="JavaScript" src="footer2.js"></script> 一応、cssファイルもチェックしました(@charset "shift_jis";)となっていたので。 こちらのファイルを@charset "utf-8";に変更してみましたが、文字化けしたままでした。 いろいろ調べてみたのですが、困っています。 ご回答、よろしくお願いします。

  • javascriptファイルは1つに統合できますか

    javascript初心者のため、どなたかご教示いただけるとありがたいです。 html内に外部javascriptファイルを読み込むようにscript要素で記述しているのですが、複数の外部jsを読み込んでおり、可能であればhtml内の記述を簡略化したいと思っております。 <現状> <script type="text/javascript" src="・・・/js/jquery.js" charset="utf-8"></script> <script type="text/javascript" src="・・・/js/jquery.page-scroller.js" charset="utf-8"></script> <script type="text/javascript" src="・・/js/jquery.cookie.js"></script> <script type="text/javascript" src="・・・/js/ui.core.js"></script> <script type="text/javascript" src="・・・/js/jquery.easing.1.3.js"></script> <script type="text/javascript" src="・・・/js/jquery.scrollfollow.js"></script> <script type="text/javascript" src="・・・/js/jquery.bxslider.js"></script> <script type="text/javascript" src="・・・/js/set_slider.js"></script> ・・・ jsに対する基礎的な質問ですが、上記のような複数の外部jsファイルを、1つの外部jsファイルにまとめることは可能なのでしょうか? (単純に1箇所にコピー&ペーストするようなイメージで) お手数ですが、ご教示のほど、宜しくお願い致します。

  • cgiをjsで。

    apeboard+を設置したとします。 http://www.2apes.com/ それを ブログに組み込むとしたら普通 インラインフレームですよね。 ですが、これをblogパーツのように <script language="JavaScript" type="text/javascript" src="http://***********/****.js" charset="Shift-JIS"></script> みたいにして、表示させる事は可能なんでしょうか?

  • XHTMLで外部JSファイルを読み込むには?

    XHTMLで外部JSファイルを読み込むには? よろしくおねがいします。 初歩的ですみません 当方 XHTML+CSSでページを作成し JSファイルを読み込みページのTOPへ移動するスクリプトを 作ったのですがXHTML上では上手くうごいてくれません。。。。 ソースはこちらです。 -------------------------------------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>てすと</title> <link href="style/stylesheet.css" rel="stylesheet" type="text/css"> <script src="script/top.js" type="text/JavaScript"></script> --省略-- 上記のソースは普通に動作するのですがDOCTYPEの宣言を ------------------------------------------------------------- <!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"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>てすと</title> <link href="style/stylesheet.css" rel="stylesheet" type="text/css"> <script src="script/top.js" type="text/JavaScript"></script> --省略-- にすると・・・動いてくれません。下段のソースを利用したいのですが 何かJSファイルを読み込む方法はありますでしょうか?? アドバイス頂ければ幸いです。よろしくお願いいたします。

  • 外部ファイルを指定するとページ上部に空白が

    bodyやcssでマージンは全てにしているのですが、javascript外部ファイルを読み込ませようとして記述を追加すると上部に空白ができてしまいます。 何が原因なのでしょうか? ↓ページのソース(都合によりファイル名は全て仮名ですすいません) <head> <title>サンプルページ</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <script type="text/javascript" src="http://test.com/****1.js"></script> <script type="text/javascript" src="http://test.com/****2.js"></script> <link rel="stylesheet" type="text/css" href="http://test.com/****.css"> <style type="text/css"> <!-- body { background-position: 0px 0px} --> </style> </head> <body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" bgcolor="#FFFFFF" text="#333333"> スクリプトの場所は全て絶対パスで指定しています。 また、charsetがeucなのはこのファイルがphpで記述されているためです。 ****1.jsはページで使うスクリプト全て(ポップアップやロールオーバー等)を記述、****2.jsはアクセス解析用のスクリプトを入れています。後者を追加してから空白が出てきたような気がします。 スクリプトの種類によってこういうことが起きるのでしょうか? ご回答お願い致します。

  • JavaScriptをファイルに回す。(表現が不適かもしれませんが)

    JavaScriptをファイルに回す。 (表現が不適かもしれませんが) 通常、HTMLのページ構成は、 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>ページタイトル</title> </head> <body> </body> </html> が基本かと思われます。その中に、JavaScriptを組み込む際は、<head>~</head>内に記述して、<body>~ </body>内に何か表示するスクリプトなら、<body onLoad="hpopen()">などと記述しますよねぇ。 その、JavaScriptの<head>~</head>内の記述を、ファイル「*.js」にして、同じ動作をさせたいのですが、具体的にどうしたらいいのでしょうか?

専門家に質問してみよう