ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の相対アドレスから絶対アドレスへの変換サンプルコード_JavaScript のヒント

JavaScript の相対アドレスから絶対アドレスへの変換サンプルコード_JavaScript のヒント

WBOY
WBOYオリジナル
2016-05-16 17:28:251563ブラウズ

LABjsのソースコードを見ていると、相対アドレスを絶対アドレスに変換する関数があったので、

コードをコピー コードは次のとおりです:

function canonical_uri(src,base_path)
{
var root_page = /^[^?#]*//。 exec(location .href)[0]、
root_domain = /^w :///?[^/] /.exec(root_page)[0]、
absolute_regex = /^w :///;

// `src` はプロトコル相対 (// または /// で始まる)、プロトコルを先頭に追加します
if (/^///?/.test(src))
{
src = location.protocol src;
}
// `src` はページ相対ですか (/ で始まる絶対 URL ではなく、ドメイン相対パスでもありません)
else if (!Absolute_regex.test(src) && src.charAt(0) != "/")
{
// `base_path` を先頭に追加します (存在する場合)
src = (base_path || "") src;
}

// `src` を絶対として返します。
returnAbsolute_regex.test(src) ? src : ((src.charAt(0) == "/" ? root_domain : root_page ) src);
}

現在のページアドレスが http://www.inspurstb.com/hzt/index.html の場合
then canonical_uri("scy .js") http://www.inspurstb.com/hzt/scy.js に戻ります

JavaScript を使用して相対パス アドレスを絶対パスに変換します

1) イメージを使用します。テスト後、中止されたリクエストが送信されます。IE6 では、新しいイメージを document.createElement_x_x_x('IMG') に変更することは同じです。
コードをコピー コードは次のとおりです。

function getAbsoluteUrl(url){
var img = new Image();
img.src = url; // 画像への相対パスを設定するとリクエストが送信されます
url = img.src;絶対パス
img.src = null; // リクエストをキャンセルします
return url;
getAbsoluteUrl("showroom/list");

2)アンカー (リンク)、リクエストは行われません。DOM に参加する場合のみリクエストが生成されますが、IE6 は

function getAbsoluteUrl(url ){
var a = document.createElement_x_x_x('A'); // Set画像への相対パス。リクエストが送信されます。
url = a.href; // この時点で、相対パスは絶対パスになります。
return url;
getAbsoluteUrl(" showroom/list");


3) JavaScript の使用: 実装はより複雑ですが、ここに例を示します: https://gist.github.com/1088850

最後に、オプション 2 が使用されます。

これは変数であり、すべての画像は元のメソッドを使用してアクセスされます。元の相対パスを返したい場合は、アンカーを使用します。 jQuery の .attr() メソッドなどの DOM クエリ メソッド:

console.log($anchor[ 0]["href"]); //jQuery オブジェクトは基本的に配列です。 1 つしかない場合は、[0] を使用して元のオブジェクトにアクセスし、次に "href";
console .log($anchor.attr("href")); // 元のパスに戻ります。 🎜>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。