ベースは、HTMLページが作成されるときにphpで動的に設定されます。
$base_line = '<base href="' . $some_path . '/" /> ';
echo $base_line;
HTMLページが表示されたので、この情報($ some_path)にアクセスする必要があります。数時間検索した後、答えが見つからないようです。ロードされたHTMLページにはベースに関連しないURLがあり、それを変更するためのPHPコードにアクセスできないことに注意してください。ロードされたページには次のようなURLが含まれる可能性があります: http://xyz.com/index.php ですが、ページ内の他のすべてのリンクはベースによって設定された値に基づいているため、ページのURLを使用してベースを取得することはできません。
画像のような要素の1つを取得し、DOMを使用してそれを分析してベースを見つけることができると思いますが、これを行うためのより簡単な方法があるはずです。何か案は?
Window.locationの使用は、ロードされたページURLに関連するものを返し、その中でベースとして設定されているものを返さないため、この状況では機能しません。
基本要素の値を取得する場合は、次のようにすることができます。
_var baseHref = document.getElementsByTagName('base')[0].href
_
またはもう少し安全にするために:
_var bases = document.getElementsByTagName('base');
var baseHref = null;
if (bases.length > 0) {
baseHref = bases[0].href;
}
_
更新:より簡潔な方法は次のようになります:
_const baseHref = (document.getElementsByTagName('base')[0] || {}).href;
_
_<base>
_がない場合、baseHref
はnullになる可能性があります。
更新2:getElementsByTagName()
を使用する代わりに、querySelector()
を使用します。
_var base = (document.querySelector('base') || {}).href;
console.log(base);
_
_<base href="http://www.google.com"/>
_
Jquery、jqlite、または廃止されたAPIは必要ありません。新しいquerySelector
APIを使用します。
var base = document.querySelector('base');
var baseUrl = base && base.href || '';
私が遭遇した問題の1つは、element.href
を使用しても設定内容が正確に返されないことです。たとえば、これがある場合:
<base href="/some/sub/directory/" />
次に、element.href
は次のようになります。
document.getElementsByTagName('base')[0].href
# http://example.com/some/sub/directory/
JQuery attr
関数を使用すると、これを回避できることがわかりました。
$("base").attr("href")
# /some/sub/directory/
JQueryを避けたい場合は、getAttribute
関数を使用することもできます。
document.getElementsByTagName('base')[0].getAttribute("href")
# /some/sub/directory/
PHPにアクセスできない場合は、javascript window.location.hostname
を使用してみてください。
あなたがのようなものが欲しいなら
http://www.example.com/blahblah/blah.html
これらの3つのことが実行に移されるより
window.location.protocol = "http"
window.location.Host = "example.com"
window.location.pathname = "blahblah/blah.html"
var url = window.location.protocol + "://" + window.location.Host + "/" + window.location.pathname;
あなたはこれを見ることができます 記事 ベースURL関数について
すべてのNodeには読み取り専用プロパティ baseURI があり、絶対ベースURLを返すか、絶対URIを取得できない場合はnullを返します。
ドキュメントのベースURLを取得するには、次を使用できます。document.baseURI
。
パス名またはURLの他の部分のみが必要な場合は、 [〜#〜] url [〜#〜] オブジェクトを作成できます。
var baseLocation = new URL(document.baseURI);
var pathname = baseLocation.pathname;
JqLite(angularjsのデフォルト)を使用している場合、コードは次のようになります。
base = angular.element(document.querySelector('base')).attr('href')
詳細については、 角度ドキュメント を参照してください。