haskell – GHCJS-DOM事件指导

haskell – GHCJS-DOM事件指导,第1张

概述我正在尝试了解如何使用GHCJS-DOM创建GUI.我一直在看你好世界的例子 https://github.com/ghcjs/ghcjs-dom-hello,这是微不足道的.添加新节点非常简单.我不能做的,并且无法从库文档(仅签名)中解决,是添加一些事件.例如,在鼠标单击时向主体添加新节点. 我希望避免使用像JQuery这样的JS库,因为我想通过GUI在GHC(webkit)和GHCJS之间移植 我正在尝试了解如何使用GHCJs-DOM创建GUI.我一直在看你好世界的例子 https://github.com/ghcjs/ghcjs-dom-hello,这是微不足道的.添加新节点非常简单.我不能做的,并且无法从库文档(仅签名)中解决,是添加一些事件.例如,在鼠标单击时向主体添加新节点.

我希望避免使用像Jquery这样的Js库,因为我想通过GUI在GHC(webkit)和GHCJs之间移植.

最后,我希望能够将一个鼠标事件表达为FRP事件,但我会一步一步解决.

如果有人有任何指导我会非常感激.我已经使用了haskell几年了,但这是我第一次尝试使用DOM.

解决方法 您可以从许多地方获取有关DOM的信息,包括 mozilla.这是一个为文档正文中的点击事件添加事件处理程序的示例…
module Main (    main) whereimport Control.applicative ((<$>))import Control.Monad.Trans (liftIO)import GHCJs.DOM       (enableInspector,webVIEwGetDomdocument,runWebGUI)import GHCJs.DOM.document (documentGetbody,documentCreateElement)import GHCJs.DOM.HTMLElement (HTMLElementSetINNERHTML,HTMLElementSetInnerText)import GHCJs.DOM.Element (elementOnclick)import GHCJs.DOM.HTMLParagraphElement       (castToHTMLParagraphElement)import GHCJs.DOM.Node (nodeAppendChild)import GHCJs.DOM.EventM (mouseClIEntXY)main = runWebGUI $\ webVIEw -> do    enableInspector webVIEw    Just doc <- webVIEwGetDomdocument webVIEw    Just body <- documentGetbody doc    HTMLElementSetINNERHTML body "<h1>Hello World</h1>"    elementOnclick body $do        (x,y) <- mouseClIEntXY        liftIO $do            Just newParagraph <- fmap castToHTMLParagraphElement <$> documentCreateElement doc "p"            HTMLElementSetInnerText newParagraph $"Click " ++ show (x,y)            nodeAppendChild body (Just newParagraph)            return ()    return ()
总结

以上是内存溢出为你收集整理的haskell – GHCJS-DOM事件指导全部内容,希望文章能够帮你解决haskell – GHCJS-DOM事件指导所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1134247.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存