我正在实施社会认证。当用户点击按钮时,我发送一个命令,以便我可以拨打window.open()
。
看看这个调用堆栈,我们可以看到在下一个事件循环中调用了端口处理程序:
由于未在点击事件生命周期内调用window.open
,因此像safari这样的浏览器不允许显示弹出窗口。
你的方法是什么?
答案 0 :(得分:6)
这不是很漂亮,但你可以做类似
的事情a
[ Html.Attributes.attribute "onClick" "window.open(this.href, this.target, 'width=800,height=600'); return false;" ]
[ text "Click me" ]
答案 1 :(得分:1)
这是一种处理这种问题的一种卑鄙的方式,并不是100%严格保证在未来的榆树版本中继续工作,但我已经不止一次地完成了这项工作:
https://medium.com/@prozacchiwawa/the-i-m-stupid-elm-language-nugget-7-8d3efd525e3e
DOM节点类型的属性getter可以在事件处理期间由json解码器触发。您可以运行所需的任何代码作为访问它的副作用。 json解码器正在访问的对象是事件处理器堆栈上的真实事件对象。现在就是这样。