summaryrefslogtreecommitdiff
path: root/src/JavaScript.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/JavaScript.hs')
-rw-r--r--src/JavaScript.hs19
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