2

window.location変数にフェッチしました。ここで、場所オブジェクト内の href から文字列の一部を削除しますが、オブジェクトは保持します。

window.location.protocolつまり、場所オブジェクトを変更したいのですが、とを引き続き使用できますwindow.location.hostが、これらの関数は変更されたオブジェクトで機能する必要があります。

たとえば、私のブラウザが表示するこのようなもの"https://my.domain.org/site"

var thisloc = window.location;
Modify the href within that object to "http://my.domain.org/othersite"

//now I want it to fetch "http" instead of "https" based on my modified object
var thisprot = thisloc.protocol;   

それはうまくいきますか?もしそうなら、それはとてもいいことです。それ以外の場合は、URL を解析して、変更された href からプロトコル、ホスト、およびパス名を取得する必要があります。これも同じ目標を達成します。

4

2 に答える 2

1

DOMを使用したURLの解析に関するJamesPadosleyの投稿に触発されました!、ここでの秘訣は、アンカー要素(<a>)をURLビルダー/パーサーとして使用することです。任意のアンカー要素で、そのhrefプロパティを何らかのURLに設定すると、DOMによって解析されます。その後、アンカー要素のプロパティを使用して、そのURLの一部を自由に変更できます。hrefいつでもプロパティをクエリして、完全なURLを確認してください。

質問の例を使用して…</p>

var builder = document.createElement("a");

builder.href = "https://my.domain.org/site";
builder.protocol = "http://";
builder.pathname = "/othersite";

console.log(builder.href); // http://my.domain.org/othersite

この時点で、http://my.domain.org/othersite要求に応じて、アンカー要素のhrefはになります。これが実際の動作を示すJSビンです:http://jsbin.com/omoqen/1/edit

window.location美しさは、アンカー要素がオブジェクトと同じURLコンポーネントプロパティを持っていることです。

protocol
host
hostname
port
pathname
search
hash
于 2012-11-05T07:36:30.930 に答える
-1

これらはブラウザーのプロパティです。値を取得して変更することはできますが、プロパティを参照しても説明どおりには機能しません。

于 2012-11-03T04:05:33.343 に答える