タイトルで私の問題を説明する方法がわからないので、これを許してください。私はいくつかのランダムなページで私のウェブサイトを開いたと言うと、私は登録ボタンがあります。本当にシンプルですが、私の場合は、登録フォームを別のタブ(またはウィンドウ)に表示する必要があります。 "RederPartial"ではなく、ある種のポップアップウィンドウ、正当な新しいタブ。問題は、登録が完了したとき(つまり、新しいユーザーが作成されたとき)、私のランダムなページから検出できるようにしたいということです。この情報をどのように渡すことができますか?最初のページをリロードせずに2つのウィンドウ間の情報交換
0
A
答えて
1
2つのウィンドウは、ファイルシステムAPIやローカルストレージを使用して、クッキーで、サーバーを介して(お互いに話を作るための様々な方法があります。
Locale Storageは、両者の間に話をするこれまで最も簡単な方法であります同じドメインから来たウィンドウですが、古いブラウザではサポートされていません。誰かがいつ登録したかを知るためにサーバーに連絡する必要があるので、サーバー(Ajax // Webソケット)を使用することをお勧めします。
ここではあなたのランダムなページで使うことができるややシンプルなAJAXソリューションがあります:
(function(){
var formOpened = false;
var registered = false;
//Change to whatever interaction is needed to open the form
$('#registerbutton').on('click', function(){
if (!formOpened){
formOpened = true;
//Will try to poll the server every 3 seconds
(function pollServer(){
$.ajax({
url: "/ajax/pollregistered",
type: "GET",
success: function(data) {
if (data.registered){
registered = true;
//do other stuff here that is needed after registration
}
},
dataType: "json",
complete: setTimeout(function() {if (!registered) pollServer();}, 3000),
//will timeout if request takes longer than 2 seconds
timeout: 2000,
})
})();
//opens the new tab
var win = window.open('/registrationform', '_blank');
win.focus();
}
});
})();
「/ ajax/pollregistered」アクションで訪問者のセッションキーを使用して、この訪問者があなたのサイトにユーザーとして登録されたかどうかをチェックするバックエンドコードを書くことができます。
ローカルストレージを使用しても構わない場合は、サーバーではなくストレージをポーリングし、登録時にローカルストレージに書き込みます。これはサーバーの負荷を軽減しますが、古くなったブラウザーを使用するユーザーには効果がない可能性があります。
この新しいタブを開く方法は完全に信頼できるものではありません。技術的には、javascriptで新しいタブを開く確実な方法はありません。それはブラウザとユーザーの好みによって異なります。新しいタブを開くと、アンチポップアッププラグインを使用しているユーザーがブロックされることがあります。
あなたのデザインを改訂し、代わりに1つのウィンドウで作業する方法を見つけることを強くお勧めします。おそらくあなた自身とあなたのユーザーの両方にとっては良いでしょう。
関連する問題
- 1. 情報交換
- 2. 情報共有DLLを呼び出して2つのスレッド間の情報交換
- 3. Vuejs - 親子以外のコンポーネント間の情報の交換
- 4. 2つのアプリケーション間のデータ交換(ニーズパターン)
- 5. 2つのPythonプロセス間のデータ交換
- 6. クラス間でExchange情報を交換する方法
- 7. Googleマップの交通情報
- 8. OnMapRedady情報ウィンドウ
- 9. コントローラと他のスクリプトとの角交換情報
- 10. 2つの別々のプロジェクト間のListBoxアイテムの交換
- 11. 2つのHTMLファイル間の本体タグの交換
- 12. 2つの配列要素の間の交換値(単純)
- 13. Anylogic GISリアルタイム交通情報
- 14. ウィンドウの交換方法TKInter
- 15. マウスのポップアップ情報ウィンドウ
- 16. スタイリングマーカーアイコンと情報ウィンドウ
- 17. 共通情報ウィンドウ
- 18. 2つのコントロール間の不透明度を交換するストーリーボード
- 19. グローバルなテンポラリレコードセットをモジュール内の交換情報に使用
- 20. 読み方マイクロソフト交換2007のIPM.Note情報
- 21. 2つのラベールの間で情報を渡す
- 22. 正規表現:2つのマーカー間でDNA情報を抽出
- 23. パンダ:2つのデータフレーム間で情報を接続
- 24. 2つのファイル間の交差
- 25. 2つの3Dサーフェス間の交差
- 26. Redux:ウィンドウの子との間で情報を渡す
- 27. Android:2つのオーバーラップビューを交換する
- 28. アプリケーションでFIX(財務情報交換プロトコル)を使用するヘルプ
- 29. OAuth2アクセストークンをユーザ情報と交換する
- 30. Google Maps API V3の表示時間と距離情報ウィンドウ
非常に助けてくれてありがとう!私はそれが最適ではないことを知っていますが、私はそれ以外の方法を考えることはできません。たぶん、IFrameを使用する?物事は、ユーザーがレシピを作成できるウェブサイトであり、レシピを作成した後に\サインインを登録できるようにしたい。また、クロスドメインのリダイレクトを必要とするfacebookなどの外部サービスを介して\ loginを登録したいと思っています。そして、レシピ作成フォームデータを編集することは、ユーザーがajaxを使ってアップロードしたイメージがあり、レシピがFacebookの壁面に不安定に公開され、公開前に登録する必要があるために面倒です – user3198994