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

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

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

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

Q&A

解決済

1回答

4685閲覧

chrome ポップアップブロックを回避できない

chemicalist11

総合スコア44

JavaScript

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

0グッド

1クリップ

投稿2021/10/25 05:11

編集2021/10/26 00:45

前提・実現したいこと

時間経過後もポップアップブロックが実行されないようにする方法について知りたい

alertで表示されるポップアップのOKボタンのクリックタイミングによって、
ポップアップブロックが実行されてしまう。
 
この場合、window.openによる子ウィンドウ画面でエラーの画面となる。

以下に該当の処理の構造を説明します。(他必要な情報があれば教えて下さい)



onclickで以下処理の関数を呼び出し

試したこと

OKボタン押下が子ウィンドウ表示と連動していないため、
一定時間経過後、ユーザー操作ではないとみなし、ポップアップブロックが実行される状況

。 
連動させる処理にするため、以下処理に変更するも状況変わらず、、、



いくつかググり出てきた方法として、
事前にwindow.open()で空の画面を表示しておき、alert後に、location.hrefで該当画面を取り込む方法
がありましたが、この方法は避けたいです。
また、以下のようなSjaxの方法も状況変わらずでした、、、

そもそものコードが良くない等あるかと思いますが、
勉強のため、できるだけ既存のコードは活かしつつ、進めていきたいです。

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

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

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

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

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

chemicalist11

2021/10/25 07:57 編集

はい、そちら拝見しました。 説明不足で申し訳ございません。処理の具体的な流れを説明します。 alert()で、「別ウィンドウの内容に同意してください。【OK】」というポップアップを表示します。 ポップアップのOK押下後、window.open()で、同意画面の子ウィンドウを表示。 その同意画面で同意をすると、自動的に親ウィンドウが次画面へ遷移するという流れです。 しかし、現状このOKボタンを一定時間後に押下すると、子ウィンドウが表示されず、ポップアップブロックが実行されてしまいます。 お手数ですが、お気づきのことなどありましたら、引き続きご確認いただけると幸いです。
Lhankor_Mhy

2021/10/25 07:58 編集

補足ありがとうございます。 つまり、「別ウィンドウの内容に同意してください。【OK】」に「OK」をするというインタラクションが事前に必要であるということですね。 それであれば、yambejpさんのご回答のように子ウィンドウを疑似モーダルにするか、あるいはそのインタラクションを疑似モーダルにすればいいと思うのですが、すでにご検討されていますか?
chemicalist11

2021/10/25 08:10 編集

はい、検討中になります。 想定より修正、影響範囲が広くなりそうなため、 もう少し皆さんからご意見をいただこうと考えていました。 ご教示いただきありがとうございます。
Lhankor_Mhy

2021/10/25 08:26

なるほど、わかりました。 回避する方法はなさそうに感じています。
guest

回答1

0

ベストアンサー

ポッアップブロックは回避できないから意味があるのです
どうしてもというなら疑似モーダル処理を検討ください

投稿2021/10/25 06:58

yambejp

総合スコア115012

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

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

chemicalist11

2021/10/25 07:11

ご教示ありがとうございます。 認識齟齬がないか確認したいのですが、 疑似モーダルでポップアップ同様のものを用意し、 そこでのOKボタン押下時に、子ウィンドウを表示する処理を実装すればよいということでしょうか。
yambejp

2021/10/25 07:17

>疑似モーダルでポップアップ同様のものを用意しそこでのOKボタン押下時 まではOKです >子ウィンドウを表示する処理 子ウィンドウ的なものを疑似モーダルで処理するのです。
chemicalist11

2021/10/25 08:54

ご教示ありがとうございます。 >ポッアップブロックは回避できないから意味がある 上記について少しお伺いしたいのですが、 回避できないというのは、Sjaxや条件式等の変更を加えても、 alertやwindow.openの処理順序や内容自体が変わらなければ、 ポップアップブロックは適用してしまうという意でしょうか。
yambejp

2021/10/25 08:56

サーバーから送られてくるものはクライアントが任意に許可しない限り 原則ポップアップブロックの対象だと考えてください。 jsなどでなんとかなるものではありません (繰り返しになりますが、かんたんに回避できるならブロックの意味がありません)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問