Я продолжил поиск и нашел решение.
Моя последняя проблема в том, что функция alert()
Javascript не работает с WebView
! Когда я тестировал код HTML, используя Chrome, он работает.
Итак, чтобы быть уверенным, что мой код Javascript выполняется, я добавил <div>
с текстом, который становится red
когда Javascript выполняется функция события.
Теперь я уверен, что вызывается функция Javascript!
Работающий код VB. Net следует
Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim sText As XElement =
<html>
<head>
<style type="text/css">
.unicode
{
font-size: 32px;
cursor: pointer;
}
</style>
<script>
function clickUnicode()
{
var eDiv = document.getElementById("divid");
eDiv.style.color = "Red";
var sValue = this.event.srcElement.innerText;
//alert('Click Unicode character:' + sValue);
window.external.notify(sValue);
}
</script>
</head>
<body>
<div id="divid">StackOverflow is great</div>
<span class="unicode" onclick="clickUnicode()">😀</span>
<span class="unicode" onclick="clickUnicode()">😁</span>
<span class="unicode" onclick="clickUnicode()">😂</span>
<span class="unicode" onclick="clickUnicode()">😃</span>
<span class="unicode" onclick="clickUnicode()">😄</span>
<span class="unicode" onclick="clickUnicode()">😅</span>
<span class="unicode" onclick="clickUnicode()">😆</span>
<span class="unicode" onclick="clickUnicode()">😇</span>
</body>
</html>
wv.Settings.IsScriptNotifyAllowed = True
wv.Settings.IsJavaScriptEnabled = True
wv.IsJavaScriptEnabled = True
wv.NavigateToString(sText.ToString())
End Sub
Функция Javascript window.external.notify(sValue)
перехватывается событием ScriptNotify.
Итак, я добавил следующий VB. Net код
Private Sub wv_ScriptNotify(sender As Object, e As WebViewControlScriptNotifyEventArgs)
Handles wv.ScriptNotify
Debug.Print("Unicode character " & e.Value & " has been clicked in WebView")
End Sub
Когда я выполняю Эта маленькая программа, и я нажимаю на последний юникод, я вижу следующие строки в окне отладки Visual Studio 2019.
Юникод, на который нажали, отображается без цвета, но это нормально.
![enter image description here](https://i.stack.imgur.com/zUh1h.png)