1

外部の JavaScript ファイルで絶対 URL を指定するためのベスト プラクティスをご存知ですか? 保守可能なソリューションを探しています。

基本的なシナリオは、javascript を使用して実行時に css ファイルを含める必要がある場合、または一部の URL に対して ajax 呼び出しを行う必要がある場合、および通常は (外部) javascript ファイル内で URL を指定する必要があるその他の状況です。

サーバーを変更する場合、または mod_rewrite を導入する場合、js ファイル内のすべての URL を手動で編集しないようにするにはどうすればよいでしょうか?

4

3 に答える 3

3

次のプロパティを使用してURL文字列を作成できます。

var thisurl = document.location.href;

これで現在のページのURL文字列が得られ、そこから解析できるといいのですが。

または、サーバー側の言語(PHPなど)を使用している場合は、それを使用してURL文字列を取得できます。これは、より高速です(これは、ここからコピーして貼り付けられます。私はテストしていません)。

<?php
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>
var thisurl = <?php echo curPageURL(); ?>;

または、サーバー側の言語で解析できるサーバー上のファイルにプロパティを保存することもできます。

于 2009-02-18T09:29:05.430 に答える
2

すべての URL を保持する javasript クラスを導入できます。このようなもの

function urlContainer(){
    this.searchServer = 'http://search.example.com';
    this.submitServer = 'http://submit.example.com';
}

次に、他のスクリプト ファイルでこのクラスを参照し、次のような URL を使用します。

alert (new urlContainer().searchServer);

したがって、すべての外部 URL が 1 つのファイルに含まれます。もっと創造的に baseUrls と連結を使用することもできますが、それはあなた次第です。

于 2009-02-18T09:48:51.590 に答える
1

別の (そしておそらくもっと簡単な) 解決策は、必要な URL を隠しフィールド値に単純に格納し、その結果、クライアント側の Javascript を使用してそれにアクセスすることです。Hidden フィールドは、HtmlInputHidden または HiddenField コントロールのいずれかである必要があることに注意してください。(基本的には、runat="server"サーバー側で値を設定できるように属性が必要です。)

于 2009-02-18T09:51:52.677 に答える