問題タブ [base-tag]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - React Router の HashRouter が タグ URLにリダイレクトする
現在のページ/some/static/page
. アプリケーションは<base href="/">
すべて<head>
のページにあり、それに依存しています。これは変更できません。
React 16、React Router 4、および の基本的な例を次に示し<HashRouter>
ます。
テスト目的ですべてのルートを無効にすることができますが、これによって動作が変わることはありません。
ここcreate-react-app
に問題を示すプロジェクトがあります。それを複製する手順は次のとおりです。
npm i
npm start
- 案内する
http://localhost:3000/some/static/page
HashRouter は明らかに の影響を受け<base>
ます。または(IE 11でのみ意図したとおりに機能します)であると予想していますが、初期化時にリダイレクトし/some/static/page
ます。/#/
/some/static/page#/
/some/static/page/#/
Root
コンポーネントが にリダイレクトされる前に、コンポーネントのクイック スプラッシュがあります/#/
。
/foo/#/
の場合はに、タグを外した場合は にリダイレクト<base href="/foo">
します。/some/static/page/#/
<base>
この問題は Chrome と Firefox (最近のバージョン) に影響しますが、Internet Explorer (IE 11) には影響しません。
<HashRouter>
の影響を受けるのはなぜ<base>
ですか? ここで使用されているのは、場所のパスに影響を与えることは想定されておらず、ハッシュのみに影響するためです。
これはどのように修正できますか?
javascript - ` `タグを尊重するようにtestcafeを作成する方法
私のアプリケーションは、ある時点で<base>
タグをウェブサイトに挿入し、その後、<script>
相対的な新しいタグを作成しますsrc
たとえば、ブラウザが からスクリプトをダウンロードするように設定<base href="http://localhost:8080/chapters/de/auth/">
および注入します。<script src="build.js" type="text/javascript" />
http://localhost:8080/chapters/de/auth/build.js
testcafe で同じアプリケーションを実行すると、結果が少し異なります。挿入されたベースは <base href-hammerhead-stored-value="http://localhost:8080/chapters/de/auth/" href="http://localhost:1337/Lj6CFUfNF/http://localhost:8080/chapters/de/auth/">
、スクリプトは<script src-hammerhead-stored-value="build.js" src="http://localhost:1337/Lj6CFUfNF!s!utf-8/http://localhost:8080/account/build.js" type="text/javascript" />
突然、以前の相対 URLbuild.js
がhttp://localhost:8080/account/build.js
、設定されているものと矛盾するようになりました。<base>
これを回避する方法はありますか?
私は走っています
テストカフェ: 1.1.0