2

ディレクトリの場所が不明なtest というフォルダーに foo.js という小さなスクリプトがあります。

$.post("bar.php");

/test/index.html にある 2 つの異なる html ファイルで使用されます。

<script src="foo.js"></script>

/test/index.html にもう 1 つ:

<script src="../foo.js"></script>

/index.html からスクリプトを実行すると、問題なく動作し、bar.php が呼び出されます。しかし、/subdirectory/index.html から呼び出すと、javascript はリソース (bar.php) が見つからないことを通知します。ただし、bar.php をコピーして /subdirectory に貼り付けると、機能します。

javascript に、スクリプトが最初に呼び出されたディレクトリを使用する代わりに、スクリプトがあるディレクトリ (この場合は test) を使用させる方法はありますか?

4

2 に答える 2

5

で始まる、ドメインへの相対パスを使用します/

$.post("/bar.php");

このように、スクリプトがどこにあるのか、またはそれを呼び出した HTML ファイルがどこにあるのかは問題ではなく、重要なのはその場所だけbar.phpです。foo.jsおそらく同じ方法も含める必要があります。

<script src="/foo.js"></script>

これは、ファイル/index.html/subdirectory/index.html.

編集:現在のページを基準にしてスクリプトがどこにあるかを実際に見つけるには、これを使用できます:

(function(){
  var myDirectory = (function(){
    var script = document.currentScript || // SHIM
      (function(){
        var scripts = document.getElementsByTagName('script');
        return scripts[scripts.length - 1];
      })();

    var src = script.getAttribute('src');
    return src.substr(0, src.lastIndexOf('/')) + '/';
  })();


  // The rest of your script here, then, wherever you make the post request:
       $.post(myDirectory + "bar.php");

})();
于 2013-08-28T21:17:15.450 に答える