diff options
Diffstat (limited to 'src/JavaScript.hs')
| -rw-r--r-- | src/JavaScript.hs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/JavaScript.hs b/src/JavaScript.hs index 21571ea..bc27818 100644 --- a/src/JavaScript.hs +++ b/src/JavaScript.hs @@ -1,5 +1,7 @@ module JavaScript ( getElementById, + documentQuerySelector, + querySelector, asEventListener, addEventListener, @@ -15,6 +17,16 @@ getElementById = js_document_getElementById . toJSString foreign import javascript unsafe "document.getElementById($1)" js_document_getElementById :: JSString -> IO JSVal +documentQuerySelector :: String -> IO (Maybe JSVal) +documentQuerySelector = fmap nullToNothing . js_document_querySelector . toJSString +foreign import javascript unsafe "document.querySelector($1)" + js_document_querySelector :: JSString -> IO JSVal + +querySelector :: String -> JSVal -> IO (Maybe JSVal) +querySelector sel e = nullToNothing <$> js_querySelector e (toJSString sel) +foreign import javascript unsafe "$1.querySelector($2)" + js_querySelector :: JSVal -> JSString -> IO JSVal + foreign import javascript "wrapper" asEventListener :: (JSVal -> IO ()) -> IO JSVal @@ -31,3 +43,10 @@ foreign import javascript unsafe "console.log($1)" foreign import javascript unsafe "console.log($1)" consoleLogVal :: JSVal -> IO () + + +nullToNothing :: JSVal -> Maybe JSVal +nullToNothing val | isNull val = Nothing + | otherwise = Just val +foreign import javascript unsafe "$1 === null" + isNull :: JSVal -> Bool |