teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

回答訂正

2020/03/16 06:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -1,5 +1,26 @@
1
1
  > 最後に/がないときはpathnameの値は_displayになりまして、これが何なのかよくわかりません。
2
2
 
3
+ 回答訂正)
4
+
5
+ ブラウザの開発者コンソールで実行する限りにおいては、``parse_url("/_display")`` を与えない限り、再現できません(他の javascriptコードの干渉がない限り、parse_url() で得られる結果の ``location``オブジェクトの``pathname`` プロパティが ``/_display``とはならないはずです)。
6
+
7
+ > 勝手に入る_displayに対応するこの条件に気持ち悪さを感じています
8
+
9
+ もしNodeJSベースで稼働するエディタをご利用であれば、エディタがデバッグ用のサーバに渡す際に location が書き換わっていないかなど、原因となりそうな事象はあるように思います。
10
+
11
+ |ブラウザ|platform| location.pathname |
12
+ |:--|:--|:--|
13
+ |Edge 最新|win10|"/spartan/dhp"|
14
+ |Chrome 80.0.3987.132|win10|"/local-ntp.html"|
15
+ |Firefox 74.0(64ビット)|win10|"newtab"|
16
+ |Cromium 72.0.3626.121|RaspberryPi2B+|"/_/chrome/newtab"|
17
+
18
+ ※``/_display``になる事例がないか、僅かですが、ブラウザ標準のホーム画面を調べてみました。
19
+
20
+ 訂正ここまで)
21
+
22
+ ----
23
+
3
24
  ブラウザ側でURL解析の際、サーバー上のディレクトリなのかファイルなのかを判別する手段としてスラッシュの有無を用いているのだと思います。
4
25
 
5
26
  * 基本的には「サーバー要求してみないと、ファイルなのかディレクトリなのかわからない。」

1

追記

2020/03/16 06:00

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -7,4 +7,14 @@
7
7
 
8
8
  ということで、以下のように決め打ちしているのではないでしょうか。
9
9
  1. pathnameの最後にスラッシュ記号がある場合はサーバー上のディレクトリとする
10
- 2. pathnameの最後にスラッシュ記号がない場合はファイルとする
10
+ 2. pathnameの最後にスラッシュ記号がない場合はファイルとする
11
+
12
+ 追記)
13
+ ユーザ関数の場合は、仕様は「書かれているコードそのもの」ですので、気になる場合は
14
+ console.log() を書き加えて、挙動の一つ一つを確かめるのが確実です。
15
+
16
+ ```javascript
17
+ var m = String( url ).match( re );
18
+ console.log( m ); // ここを調査してみるなど
19
+ if( m ) {
20
+ ```