質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

6916閲覧

JavaScriptで実行されるリダイレクトを止める方法

gori

総合スコア17

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/04/12 14:45

編集2018/04/14 02:57

JavaScriptによってトップページにリダイレクトされるページがあります。
ブラウザ上でページを確認したいのですが、jsをオフにして確認したところ、そのページで読み込まれていたすべてのJSが実行されないため、正常にページを開くことができません。
リダイレクトのコードはlocation.hrefです。
リダイレクトの実行のみを止める方法はないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2018/04/12 14:53

リダイレクトする方法はいくつかある為、リダイレクト用コードを指定して下さい。
gori

2018/04/13 09:28

すみません、どこのコードでリダイレクトされているか分からないため指定できません。
think49

2018/04/14 01:35

私の回答へのコメントに「確か location.hrefだったと思います」とありますが、特定できたのでしょうか。後々、参考にする方のために質問文への追記をお願いします。
guest

回答1

0

ベストアンサー

各プロパティの descriptor

参考情報。

JavaScript

1/** 2 * location.href 3 */ 4console.log(Object.getOwnPropertyDescriptor(location, 'href')); // {value: "https://teratail.com/questions/121608", writable: true, enumerable: true, configurable: false} 5 6/** 7 * location.replace 8 */ 9console.log(Object.getOwnPropertyDescriptor(location, 'replace')); // {value: ƒ, writable: false, enumerable: true, configurable: false} 10 11/** 12 * window.location 13 */ 14console.log(Object.getOwnPropertyDescriptor(window, 'location')); // {value: Location, writable: true, enumerable: true, configurable: false} 15 16/** 17 * window.window 18 */ 19console.log(Object.getOwnPropertyDescriptor(window, 'window')); // {value: Window, writable: false, enumerable: true, configurable: false}

location.href

前述の通り、location.href は書き換えできず、グローバルオブジェクトに至るまで、上位オブジェクトも書き換え出来ません。
従って、スコープを汚すことが出来なければ、制御不可能と思われます。

JavaScript

1(function (location) {[ 2 // この中では locstion の名前は書き換えられた location を参照する (location から始まらなければ回避可能) 3}(customLocation)); // 書き換えたlocationを渡す

Re: gori さん

投稿2018/04/12 15:41

編集2018/04/13 13:32
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gori

2018/04/13 09:36 編集

参考を貼っていただきありがとうございます。 確か location.hrefだったと思います。 location.hrefだった場合にリダイレクトを止める方法はありますでしょうか。
think49

2018/04/13 13:35

親記事に追記しました。
gori

2018/04/14 03:04

スコープを汚す方法について教えていただきたいです。 ブラウザのアドオン「Greasemonkey」 等を使用して、リダイレクトのコードより先にスクリプトを実行して、リダイレクトを止めるとかでしょうか。
think49

2018/04/14 03:57

コード全体を即時関数で括って、ダミーオブジェクトを渡してください。 質問を改めて読みましたが、他人のサイトを確認したいのでしょうか。自分に管理権限がない?
gori

2018/04/14 04:29 編集

htmlのみ更新が認められているページですね。 特定のクッキーを読み込んでいないとリダイレクトされるページで、更新時のブラウザでの確認でクッキーの切り替えが手間だったので他に方法がないか模索していました。 読み込んでいるJSに対して修正することはできないです。
think49

2018/04/14 04:35 編集

HTMLが参照する外部JSの参照先を書き換えて、location.hrefを削除したJSファイルを指定してやればいいのではないでしょうか。 オリジナルのJSコードから location.href を削除すれば、期待通りに動作しそうな気がします。 でなければ、Proxomitronで直接書き換えるか。
think49

2018/04/14 04:39

「スコープを汚す」とはスコープチェーン上でグローバルスコープに辿り着く前に関数スコープ/ブロックスコープを置いて、任意の改変した location という名前のオブジェクトを定義しておくことです。コードを書き換えられなければ、無理です。
think49

2018/04/14 04:45

> 特定のクッキーを読み込んでいないとリダイレクトされるページで、更新時のブラウザでの確認でクッキーの切り替えが手間だったので他に方法がないか模索していました。 これが気になるのですが、Cookieを切り替えるのが正攻法のはずで、リダイレクトの処理の切り替えるだけで、本当に意味のあるテストになるのでしょうか。 CookieA … リダイレクトされる(動作A) CookieB … リダイレクトされない(動作B) CookieA(リダイレクト処理無効化) … リダイレクトされない(動作C) 動作Aと動作Cが同じ挙動である確証はありますか。 リダイレクト処理以外で切り替わる処理がない事は保証されていますか。
gori

2018/04/14 04:56

ページの体裁のみを確認する想定ですが、確かに同じ挙動になるかはリダイレクト処理を無効にしてみないことには分からないですね。
think49

2018/04/14 05:06

やってみても分からない(気づかない処理がある)場合があるので、コードを作った人に聞くべきだと私は思います。
gori

2018/04/14 05:16

そうですね、問題解決にはなりませんが、自分がやろうとしていることが徒労に終わるかもしれないということですね。 実際のページも見せていないのにここまで問題解決に協力いただきありがとうございます。
think49

2018/04/14 09:56

回答していて、「実はこの質問は意味がないことが分かりました。やってみたらできなかったので、~の方法で自己解決しました。」といわれて、自己解決ベストアンサーされるとがっくりくるので、やる前に確認すべきことは徹底して頂けると助かります。 質問Aにマッチする回答Aがあり、質問Bでないと解決できなかったので自前で回答Bを用意してクローズする。 これは後々、質問Aを求めてこのスレッドを訪れる人にとってノイズになります。 知の共有という観点では、「回答Aをベストアンサーとし、回答Bは補足事項としてこっそりどこかに追記しておく」がベストだと思います。 この質問が後々、参考にされることを考慮した上で適切な処理をお願いします。
gori

2018/04/14 15:55

承知しました。ベストアンサーとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問