Javascript 如何使用VB.Net WebView控件加载本地脚本?

Javascript 如何使用VB.Net WebView控件加载本地脚本?,javascript,vb.net,import,webview,local,Javascript,Vb.net,Import,Webview,Local,我使用VB.NET在WinForm中开发了一个使用WebView的应用程序 WebView中显示的HTML代码是使用VB.NET代码动态生成的 wvSelect.Settings.IsScriptNotifyAllowed = True wvSelect.Settings.IsJavaScriptEnabled = True wvSelect.NavigateToString(sHtmlText) 其中sHtmlText包含HTML标记和值 这很有效 我的HTML字符串

我使用
VB.NET
WinForm
中开发了一个使用
WebView
的应用程序

WebView
中显示的HTML代码是使用
VB.NET
代码动态生成的

    wvSelect.Settings.IsScriptNotifyAllowed = True
    wvSelect.Settings.IsJavaScriptEnabled = True
    wvSelect.NavigateToString(sHtmlText)
其中
sHtmlText
包含HTML标记和值

这很有效

我的HTML字符串是在模块中生成的

    Public eHtml =
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
        <script type="text/javascript">
            // script (see code below)
        </script>
        <style type="text/css">
因为,我已经做了这个改变,在WebView中显示的内容与我以前获得的不同

我想,
.JS
文件没有被调用、找不到或其他什么

您必须知道,在
WebView
中加载HTML字符串之前,我将其保存在.HTML文件中

当我双击这个.HTML文件时,
Chrome
加载它,显示的内容是正确的

只有当HTML字符串显示在WebView上时,问题才会发生

如您所见,导入JQuery脚本没有任何问题。 此问题仅适用于
LOCAL
脚本

作为参考,我的Javascript文件包含以下行(我删除了一些行)
这只是为了说明使用了JQuery

var eUnicode;
var iCounter = 0;
var eDraggable;

$(document).ready(function () {
    $('.button').attr('draggable', 'True');

    $('.digit').click(function (ev) { clickDigit(ev); });

    $(".button").click(function (ev) {
        clickButton(ev.target);
    });

    showFirstTab();
});

function clickButton(eButton) {
    var sName = event.srcElement.innerText;
    hideAllOnglets();
    eButton.style.background = "orange";
    showOnglet(sName);
}

function showTab(sName) {
    var eOnglet = document.getElementById(sName);
    eOnglet.style.display = "block";
}

是否有人已经遇到并解决了此问题?

我已使用嵌入式文件(VB.Net资源)解决了我的问题

这种技术更安全,因为安装位置上的用户无法修改中的嵌入文件

js文件位于我的应用程序文件/文件夹树中,已在
构建操作
属性中定义为
嵌入式资源
,如上所述

我不使用
标记,因为它不起作用,而且HTML字符串已经从我的代码中为其他部分动态生成

我的VB.Net代码如下

Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim reader As StreamReader
    Dim ass As Assembly = Assembly.GetExecutingAssembly()

    sHtmlText = eHtml.ToString()
    sHtmlText = sHtmlText.Replace("(%-ONGLET-%)", sOngletText)
    sHtmlText = sHtmlText.Replace("(%-TABLE-%)", sTableText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.JavaScript.js"))
    Dim sScriptText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-SCRIPT-%)", sScriptText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.StyleSheet.css"))
    Dim sStyleText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-STYLE-%)", sStyleText)

    wvSelect.Settings.IsScriptNotifyAllowed = True
    wvSelect.Settings.IsJavaScriptEnabled = True
    wvSelect.NavigateToString(sHtmlText)

    Dim file As System.IO.StreamWriter
    file = My.Computer.FileSystem.OpenTextFileWriter("output.html", False)
    file.Write(sHtmlText)
    file.Close()
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!--
        <script type="text/javascript" src="./app.js"></script>
        <script type="text/javascript" src="file:///D:/Documents/+Informatique/Application/@Visual Basic.NET/UnicodeInput/app.js"></script>
        <script src="file:///D:/Documents/app.js"></script>
-->
        <script type="text/javascript">
            (%-SCRIPT-%)
        </script>

        <style type="text/css">
            (%-STYLE-%)
        </style>
    </head>
    <body>
        <div id="onglet">
            <div class='button'>Keyboard</div>
(%-ONGLET-%)
            <div class='button' onclick="GetNewCmdFile()">*ADD</div>
        </div>
正如你们所看到的,我对CSS文件做了同样的改进,我发现这个文件有一些错误

我的“伪”HTML代码如下

Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim reader As StreamReader
    Dim ass As Assembly = Assembly.GetExecutingAssembly()

    sHtmlText = eHtml.ToString()
    sHtmlText = sHtmlText.Replace("(%-ONGLET-%)", sOngletText)
    sHtmlText = sHtmlText.Replace("(%-TABLE-%)", sTableText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.JavaScript.js"))
    Dim sScriptText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-SCRIPT-%)", sScriptText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.StyleSheet.css"))
    Dim sStyleText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-STYLE-%)", sStyleText)

    wvSelect.Settings.IsScriptNotifyAllowed = True
    wvSelect.Settings.IsJavaScriptEnabled = True
    wvSelect.NavigateToString(sHtmlText)

    Dim file As System.IO.StreamWriter
    file = My.Computer.FileSystem.OpenTextFileWriter("output.html", False)
    file.Write(sHtmlText)
    file.Close()
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!--
        <script type="text/javascript" src="./app.js"></script>
        <script type="text/javascript" src="file:///D:/Documents/+Informatique/Application/@Visual Basic.NET/UnicodeInput/app.js"></script>
        <script src="file:///D:/Documents/app.js"></script>
-->
        <script type="text/javascript">
            (%-SCRIPT-%)
        </script>

        <style type="text/css">
            (%-STYLE-%)
        </style>
    </head>
    <body>
        <div id="onglet">
            <div class='button'>Keyboard</div>
(%-ONGLET-%)
            <div class='button' onclick="GetNewCmdFile()">*ADD</div>
        </div>

(-SCRIPT-%)
(-样式-%)
键盘
(-ONGLET-%)
*加

评论中的内容是我已经尝试过的,它在WinForm VB.Net WebView中不起作用,但在Chrome上的纯HTML中却能很好地工作。

我使用嵌入式文件(VB.Net资源)解决了我的问题

这种技术更安全,因为安装位置上的用户无法修改中的嵌入文件

js文件位于我的应用程序文件/文件夹树中,已在
构建操作
属性中定义为
嵌入式资源
,如上所述

我不使用
标记,因为它不起作用,而且HTML字符串已经从我的代码中为其他部分动态生成

我的VB.Net代码如下

Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim reader As StreamReader
    Dim ass As Assembly = Assembly.GetExecutingAssembly()

    sHtmlText = eHtml.ToString()
    sHtmlText = sHtmlText.Replace("(%-ONGLET-%)", sOngletText)
    sHtmlText = sHtmlText.Replace("(%-TABLE-%)", sTableText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.JavaScript.js"))
    Dim sScriptText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-SCRIPT-%)", sScriptText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.StyleSheet.css"))
    Dim sStyleText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-STYLE-%)", sStyleText)

    wvSelect.Settings.IsScriptNotifyAllowed = True
    wvSelect.Settings.IsJavaScriptEnabled = True
    wvSelect.NavigateToString(sHtmlText)

    Dim file As System.IO.StreamWriter
    file = My.Computer.FileSystem.OpenTextFileWriter("output.html", False)
    file.Write(sHtmlText)
    file.Close()
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!--
        <script type="text/javascript" src="./app.js"></script>
        <script type="text/javascript" src="file:///D:/Documents/+Informatique/Application/@Visual Basic.NET/UnicodeInput/app.js"></script>
        <script src="file:///D:/Documents/app.js"></script>
-->
        <script type="text/javascript">
            (%-SCRIPT-%)
        </script>

        <style type="text/css">
            (%-STYLE-%)
        </style>
    </head>
    <body>
        <div id="onglet">
            <div class='button'>Keyboard</div>
(%-ONGLET-%)
            <div class='button' onclick="GetNewCmdFile()">*ADD</div>
        </div>
正如你们所看到的,我对CSS文件做了同样的改进,我发现这个文件有一些错误

我的“伪”HTML代码如下

Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim reader As StreamReader
    Dim ass As Assembly = Assembly.GetExecutingAssembly()

    sHtmlText = eHtml.ToString()
    sHtmlText = sHtmlText.Replace("(%-ONGLET-%)", sOngletText)
    sHtmlText = sHtmlText.Replace("(%-TABLE-%)", sTableText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.JavaScript.js"))
    Dim sScriptText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-SCRIPT-%)", sScriptText)

    reader = New StreamReader(ass.GetManifestResourceStream("UnicodeInput.StyleSheet.css"))
    Dim sStyleText = reader.ReadToEnd()
    reader.Close()
    sHtmlText = sHtmlText.Replace("(%-STYLE-%)", sStyleText)

    wvSelect.Settings.IsScriptNotifyAllowed = True
    wvSelect.Settings.IsJavaScriptEnabled = True
    wvSelect.NavigateToString(sHtmlText)

    Dim file As System.IO.StreamWriter
    file = My.Computer.FileSystem.OpenTextFileWriter("output.html", False)
    file.Write(sHtmlText)
    file.Close()
<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!--
        <script type="text/javascript" src="./app.js"></script>
        <script type="text/javascript" src="file:///D:/Documents/+Informatique/Application/@Visual Basic.NET/UnicodeInput/app.js"></script>
        <script src="file:///D:/Documents/app.js"></script>
-->
        <script type="text/javascript">
            (%-SCRIPT-%)
        </script>

        <style type="text/css">
            (%-STYLE-%)
        </style>
    </head>
    <body>
        <div id="onglet">
            <div class='button'>Keyboard</div>
(%-ONGLET-%)
            <div class='button' onclick="GetNewCmdFile()">*ADD</div>
        </div>

(-SCRIPT-%)
(-样式-%)
键盘
(-ONGLET-%)
*加
评论中的内容是我已经尝试过的,在WinForm VB.NETWebView中不起作用,但在Chrome上的纯HTML中却可以完美地工作