2017-04-08 9 views
1

私は社会的な認証を実装しています。ユーザーがボタンをクリックすると、私はwindow.open()に電話できるようにコマンドを送信します。窓口を開く。ポート番号

このコールスタックを見ると、我々はポートハンドラは、次のイベントループで呼び出されることがわかります。 enter image description here

window.openのではサファリのようなブラウザ、クリックイベントのライフサイクルの中に呼び出されていないことはできません。ポップアップが表示されます。

あなたのアプローチは何ですか?

+0

Elmに[iframe](http://package.elm-lang.org/packages/elm-lang/html/2.0.0/Html#iframe)オーバーレイを作成して、srcを関連するログインに設定することができますかページ? –

+0

@SimonHNah、それは[セキュリティ上の懸念]です(http://stackoverflow.com/a/9089070/592641) – Birowsky

+0

イベントバッチングフレームワークを使用していますか?クリックハンドラ内のポートを介してwindow.openを呼び出すと、正常に動作します。 – dta

答えて

4

それは超きれいではありませんが、あなたはそれがこれを処理するための人手不足の方法だと、100%でないが、厳密に将来のニレのリリースで作業を続けることが保証さが、私はこれ以上やった

a 
    [ Html.Attributes.attribute "onClick" "window.open(this.href, this.target, 'width=800,height=600'); return false;" ] 
    [ text "Click me" ] 
+0

コマンドが次のイベントループを待つべきかどうかを制御するまで、これは最も簡単な方法です – Birowsky

0

ような何かを行うことができます一旦ピンチよりも:

https://medium.com/@prozacchiwawa/the-i-m-stupid-elm-language-nugget-7-8d3efd525e3e

DOMノードタイプのプロパティゲッターは、イベント処理中にJSONデコーダによってトリガすることができます。あなたはそれにアクセスする副作用としてあなたが望むコードを実行することができます。 jsonデコーダがアクセスしているオブジェクトは、イベントハンドラスタック上の実際のイベントオブジェクトです。

関連する問題