15

HTML ページが構築されると、ベースは php で動的に設定されます。

$base_line = '<base href="' . $some_path . '/" /> ';
echo $base_line;

HTML ページにアクセスしたので、この情報 ($some_path) にアクセスする必要があります。数時間検索しても、答えが見つからないようです。ロードされた HTML ページには、ベースに関連しない URL があり、それを変更するための PHP コードにアクセスできないことに注意してください。ロードされたページにはhttp://xyz.com/index.phpのような URL が含まれている可能性がありますが、ページ内の他のすべてのリンクはベースによって設定された値に基づいているため、ページ URL を使用してベースを取得することはできません。 .

画像のような要素の 1 つを取得し、DOM を使用してそれを分析してベースを見つけることができると思いますが、これを行うより簡単な方法があるはずです。何か案は?

window.location を使用しても、読み込まれたページの URL に関連するものが返され、その中でベースとして設定されたものは返されないため、この状況では機能しません。

4

6 に答える 6

42

アップデート 3

以下の彼の回答で@jorgecasar が述べたようにbaseURI、すべてのプロパティがありますNode(これには every が含まれますElement)。

を呼び出すと、タグdocument.baseURIを考慮して、ページへのベース パスが取得されます。<base>

これは最近のすべてのブラウザーでサポートされている最近のプロパティであることに注意してください。含まれているようですが、具体的なドキュメントは見つかりませんでした)。

また、属性をdocument.baseURI取得すると完全修飾絶対パスが得られるのに対し、href属性を取得する<base>と指定した正確な値が得られるため、2 つの使用法にわずかな違いがあることに注意してください。


オリジナル

基本要素の値を取得したい場合は、次のようにすることができます。

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;

baseHrefがない場合は null になる可能性があります<base>


更新 2: を使用する代わりに、次をgetElementsByTagName()使用しますquerySelector()

var base = (document.querySelector('base') || {}).href;
console.log(base);
<base href="http://www.google.com"/>

于 2012-12-12T04:25:08.620 に答える
10

jquery、jqlite、または廃止された API は必要ありません。新しいquerySelectorAPIを使用します。

var base = document.querySelector('base');
var baseUrl = base && base.href || '';
于 2015-05-23T11:05:22.267 に答える
-1

jqLit​​e (angularjs のデフォルト) を使用している場合、コードは次のようになります。

base = angular.element(document.querySelector('base')).attr('href')

詳細については、 Angular ドキュメントを参照してください。

于 2015-05-08T15:20:27.303 に答える
-1

window.location.hostnamePHP にアクセスできない場合は、JavaScript を使用してみてください。

次のようなものが必要な場合

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 関数については、この記事を参照してください。

于 2012-12-12T04:20:39.470 に答える