17

のドメインにあるページにCSSスタイルシートを動的にロードする必要があります。スタイルシートのhref属性で使用するJSファイルの完全なURLを取得するにはどうすればよいですか?

たとえば、構造は次のとおりです。

http://bla.com/js/script.js

http://bla.com/css/style.css

スタイルシートをページhttp://boo.net/index.htmlに動的にロードしたい。問題は、事前にbla.comビットがわからないことです。スタイルシートが、JSファイルに対して../css/にあるという事実だけです。

もちろん、スクリプトはindex.htmlに含まれています。jQueryも問題ありません。

4

7 に答える 7

19

script タグに ID を追加します。

<script type="text/javascript" id="myScript" src="http://bla.com/js/script.js"></script>

そしてでhttp://bla.com/js/script.js

var myScript = document.getElementById('myscript');
var myScriptSrc = myScript.getAttribute('src');
alert(myScriptSrc); // included for debugging

の値を操作して、myScriptSrc上の他のコンテンツへのパスを取得できる必要がありますbla.com

このサンプルは、ジェームズ・ブラックが彼の答えで意味したものだと思います。

最後に、 の使用を提案しているすべての人に、現在のページ アドレスへの読み取り専用アクセスが必要な場合は、またはdocument.locationを使用する必要があることに注意してください。ページ アドレスを設定する場合は、常に を使用する必要があります。機能しますが、文字列が場所に割り当てられているのを見るのはいつも気になりました。JavaScript ではあらゆる種類の他の暗黙的な型変換が許可されているため、その理由はわかりません。document.URLwindow.locationwindow.location.hrefwindow.location = 'location';

  • mozilla reference :document.location元々は読み取り専用のプロパティでしたが、Gecko ブラウザではそれに割り当てることもできます。クロスブラウザーの安全性のために、代わりにwindow.locationを使用してください。URL だけを文字列として取得するには、読み取り専用のdocument.URLプロパティを使用できます。
  • 太陽参照:位置documentをオブジェクトのプロパティとして使用しないでください。代わりにdocument.URLプロパティを使用してください。のdocument.locationシノニムであるプロパティdocument.URLは非推奨です。
于 2009-08-14T19:02:24.573 に答える
7

Jquery を使用すると、次のようなことができます。

$('script[src$="my_script.js"]').attr('src').replace('my_script.js','');
// outputs something like: "/static/js/"
于 2011-10-11T01:05:53.973 に答える
6
var JS_SELF_URL = (function() {
    var script_tags = document.getElementsByTagName('script');
    return script_tags[script_tags.length-1].src;
})();

ブラウザーはタグを解析するときに、タグをダウンロードして実行します。したがって、JS ファイルが実行されると、現在解析されている最後のタグになります。

于 2013-01-21T20:11:36.653 に答える
0

エラー オブジェクトのスタック プロパティは、URL 情報を提供できます。

try 
{ 
  throw new Error();
}
catch(exc)
{
  console.log(exc.stack);
}

残念ながら、Webkit はスタック プロパティをサポートしていません (ただし Chromium はサポートしています)。この機能をサポートするブラウザーはいくつかあります: http://173.45.237.168/reference/html/api/Error.html#Error.stack

スタックの代わりに、Webkit は sourceURL プロパティを提供します。使用例は次のとおりです。

try 
{ 
  throw new Error();
}
catch(exc)
{
  console.log(exc.sourceURL);
}
于 2010-06-15T19:39:10.310 に答える
0

JavaScript の場所の script タグを調べることができます。また、document.location を使用することで、css ファイルの場所を特定するために相対アドレスを特定できます。

于 2009-08-14T18:01:00.157 に答える
-1

を読むことができますdocument.locationが、相対 URL を使用することもできます

于 2009-08-14T17:48:42.223 に答える