問題タブ [showmodaldialog]
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 - window.open から値を返す
最近、Chrome が window.showModalDialog をサポートしなくなったことを発見しました。これは、企業アプリケーションがこのメソッドを使用しているため問題があります。
どうやら、showModalDialog を復元できる短期的な回避策がありますが、レジストリを変更する必要があり、平均的なユーザーにとっては複雑すぎる (そしてリスクが高い) ものです。したがって、私はこの回避策の大ファンではありません。
長期的な解決策は明らかに、この古いメソッドへのすべての呼び出しを削除し、それらを便利な jQuery プラグイン (たとえば、VistaPrint のSkinny Modal Dialog pluginなど) に置き換えることです。ちなみに他の提案も歓迎します)。
モーダル ダイアログを使用する典型的なシナリオは、元に戻すことができないアクションを実行する前にユーザーに Yes/No の確認を求めること、続行する前に利用規約に同意するようユーザーに求めることなどです。通常、「はい」の onclick イベントまたはモーダル ダイアログの [OK] ボタンは次のようになります。
同様に、「キャンセル」または「いいえ」ボタンは次のようになります。
ダイアログから値を返すことができるという事実は、ユーザーが「OK」または「キャンセル」ボタンをクリックしたかどうかを「親」ウィンドウに通知できるため、非常に便利です。
showModalDialog について最後に言及することは、ダイアログに表示されるドキュメントが別のドメインからのものであっても、うまく機能するということです。http://the-client.comから JavaScript を実行することは非常に一般的ですが、「利用規約」の Web ページはhttp://the-enterprise-vendor.comからのものです。
長期的なソリューションに取り組んでいる間、できるだけ早く展開できる一時的なソリューションが必要です。ここに私の基準があります:
- 既存の JavaScript の最小限のコード変更
- ポップアップ ウィンドウは「親」に値を返すことができなければなりません。通常、この値はブール値ですが、任意の単純な型 (string、int など) にすることができます。
- コンテンツの URL が別のドメインのものであっても、ソリューションが機能する必要があります。
これが私がこれまでに持っているものです:
1) JavaScript に次のメソッドを追加します。
この方法でわかるように、メニューとツールバーを非表示にすることで、ポップアップ ウィンドウをできるだけダイアログに似せようとしています。ウィンドウがユーザーによって閉じられたかどうかを確認する時間を 500 ミリ秒ごとに設定します。そうであれば、「returnValue」を取得してコールバックを呼び出します。
2) showModalDialog へのすべての呼び出しを次のように置き換えます。
メソッドの 4 番目のパラメーターは、ユーザーが続行を許可する前に [OK] ボタンをクリックしたかどうかを確認するコールバックです。
長い質問だと思いますが、基本的には次のようになります。
- 私が提案する解決策についてどう思いますか?
- 特に、window.open で開いたウィンドウから returnValue を取得できると思いますか?
- あなたが提案できる他の選択肢はありますか?
c# - Chromeの新しいバージョンでのshowmodalDialogの問題
新しいバージョンの Google chrome は showmodalDialog を削除しました。このブラウザでの私のコードは動作しません どうすれば問題を解決できますか?
javascript - Chrome 37 では showmodaldialog のサポートが停止されました。代わりに使用するものは何ですか?
Chrome
クロムが のサポートを停止したため、新しいバージョン (37 以降)の起動後に Web アプリケーションがクラッシュしました。ただしshowmodaldialog
、Web アプリケーションに同じ機能を実装する必要があります。
return value
すべてのポップアップshowmodaldialog
ページを個別に設計し、親ページから呼び出しました。
html - Googleアプリスクリプトのモーダルダイアログは編集可能ですか?
.showModalDialog 関数を使用していくつかの html を表示しています。タイトルの削除やパディングの変更など、このモーダル ダイアログのプロパティの一部を変更したいのですが、これを行う方法はありますか?
javascript - window.showModalDialog の可用性を確認するには?
Javascript メソッド window.showModalDialog は廃止され、Chrome ブラウザでは機能しなくなりました。まもなく Fire Fox で動作しなくなります。ブラウザがshowModalDialogをサポートしていない場合に限り、window.openに置き換えたいと思います。
ブラウザがまだこの機能をサポートしているかどうかを検出する方法は? modernizr ライブラリとその方法で行うことは可能ですか?
google-chrome - 「showmodaldialog」がクロムで機能しない! window.open 以外の選択肢はありますか?
私のコードでは、datepicker に「showmodaldialog」が使用されていますが、chrome では機能しません。
window.open 以外の選択肢はありますか?
もう1つ、私はIE11の変更の下で作業しているため、この変更はクロム、IE11 STDモード、IE9 STDモードの3つすべてで実行する必要があります。
python - Pubsub 経由で ShowModal を使用して Dialogue を作成および破棄した後、wxpython メイン フレームに戻れない
wxpython と wx.lib.pubsub を使用してアプリケーションをプログラミングしています。Python 2.7.3で
1- メニュー項目のあるフレームがあります。このメニューをクリックすると、pubsub によってメッセージが公開されます。
2- このメッセージは (可能であれば) 破棄し、「第 1 レベル」のダイアログを作成します。
3- 「第 1 レベル」ダイアログには、値のリストと「値の追加」ボタンがあります。(注:このような変数のリストは変更できるため、このリストを更新しようとしています)
4- 「値を追加」ボタンをクリックすると、別のメッセージが pubsub によってパブリッシュされます。
5- このメッセージは「第 2 レベル」ダイアログを作成するため、新しい変数の新しい名前を書き込むことができます。
6- この「第 2 レベル」ダイアログには「続行」ボタンがあり、次の 2 つの結果があります。
最初のもの: Self.Destroy();
2 つ目: ステップ 2 に進みます。つまり、「第 1 レベル」のダイアログを破棄して、再度作成します。
その時点までプログラムは正常に動作しているように見えますが、「最初のレベル」のダイアログに変数を「追加」し終えると、それを破棄すると、ステップ 1 で述べたメイン フレームに戻ることができなくなります。
なぜこうなった?
すべてのダイアログは、ShowModal() を介して表示されます。ただし、Show() のみを使用すると問題なく動作するように見えますが、プログラムには多くのメニューと項目があるため、ShowModal() を使用することをお勧めします。Show() では機能するが、ShowModal() では機能しない理由は何ですか?
私がやりたいタスクを実行するためのより簡単な方法があれば、それはありがたいです。
javascript - Safari 8 で新しく開いたダイアログの高さが正しくない
ここで最初のタイマー!
Mac OS Yosemite で Safari 8 を使用すると、JS 関数window.showModalDialog()で作成されたダイアログの高さに関連する望ましくない動作が見られます。これはブラウザのバグですか、それとも何か他のものですか? Safari 8 の条件を設定する必要なく、すべてのブラウザーで一貫した高さでダイアログを開くことができるようにしたいと考えています。
動作は次のとおりです。
新しいモーダルを表示すると、その高さが予想よりも低くなります。モーダルの上部領域を右クリックして [ツールバーのカスタマイズ] を選択すると、正しい高さが復元されます。カスタマイズ オプションで [完了] をクリックすると、ウィンドウの高さが再び増加し、今度は必要以上の高さが表示される場合があります。
[表示] > [ステータス バーを表示] の一般的な Safari 設定が有効になっている場合、ダイアログは目的の高さでレンダリングされます。ステータス バーが無効になっている場合、ダイアログは不適切な高さでレンダリングされます。
追加情報
説明付きのスクリーンショット: http://imgur.com/KqrHZs4
Safari 8 および 6.2 では、最初にダイアログを開いたときに、誤った値が報告されることがあります (スクリーンショットを参照)。ページを右クリックして [再読み込み] を選択すると、ページが正しい値で更新されます。
URL バーを非表示にすることはできないと思います。これは、ウィンドウの高さの不動産に関連する問題の一部であると思います。
コード - モーダル ダイアログを起動するテスト ページ。
javascript - ネストされた showModalDialog に関する ie11 の問題
多くのモーダル ダイアログを使用して入力を受け取る Web アプリケーションに取り組んでいます。この問題は、アプリを IE11 に対応させ始めたときに始まりました (IE8 では問題なく動作します)。モーダル ダイアログ ボックスは、メイン ページから呼び出されると完全に値を返しますが、モーダル ダイアログからモーダル ダイアログを作成すると、値は返されますが、キャッチされず、undefined
.
このコードは、メイン ページ経由で使用すると完全に機能しますが、モーダル ダイアログ ページから使用するreturnValue
と失われます。