Я обнаружил webviewhs
и попробовал это недавно. Это просто работает, и я думаю, что он может делать то, что мне нужно. Образцы в изобилии, но мне понадобятся некоторые советы экспертов Haskell.
{-# LANGUAGE
OverloadedStrings
, QuasiQuotes
#-}
import Data.Text
import Language.Javascript.JMacro
import qualified Graphics.UI.Webviewhs as WHS
main :: IO ()
main =
WHS.withWindowLoop
WHS.WindowParams
{ WHS.windowParamsTitle = "webviewhs - How do I run some JavaScript inside the window?"
-- This could be a localhost URL to your single-page application (SPA).
, WHS.windowParamsUri = ""
, WHS.windowParamsWidth = 800
, WHS.windowParamsHeight = 600
, WHS.windowParamsResizable = True
, WHS.windowParamsDebuggable = True
}
-- This is the callback JavaScript can execute.
(\ _window stringFromJavaScript -> print stringFromJavaScript) $
-- This function runs every window loop.
-- Return True to continue the loop or False to exit the loop.
\ window -> do
let string = "Hello from Haskell." :: Text
-- runJavaScript returns either True on success or False on failure.
WHS.runJavaScript
window
[jmacro|
alert ("Yahoo! Alert windows, but little too persistent!");
window.external.invoke("Hello from JavaScript.");
|]
Если я использую код выше, диалоговое окно оповещения (тест) продолжает появляться. Я хотел бы, чтобы это прошло после ok
Я также несколько раз пытался получить информацию (document.getElementById
) из поля input
сайтов. Не могу заставить это работать. Для меня webviewhs
- это недостающее звено в Haskell, и я бы очень хотел, чтобы оно заработало.