javascript - 如何使用 VB.Net WebView 控件加载本地脚本?
问题描述
我开发了一个WebView
在WinForm
using中使用 a 的应用程序VB.NET
。
中显示的 HTML 代码WebView
是使用代码动态生成的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">
这是可行的,但是每次我编写<
字符时 Javascript 代码都会崩溃,并且 Javascript 代码的颜色格式不是最佳的。
我知道我可以使用
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
这适用于<
和>
字符,但颜色格式非常糟糕。
所以,我决定将我所有的Javascript
代码移到.JS
文件中。
我的 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 src="file:///D:/Documents/app.js"></script>
<style type="text/css">
因为,我做了这个改变,在 WebView 中显示的内容与我之前获得的不同!
我想那个.JS
文件没有被调用,没有找到或者别的什么。
您必须知道,在加载 HTML 字符串之前WebView
,我将其保存在 .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 Resource)解决了我的问题。
该技术更安全,因为用户无法在安装位置修改嵌入文件。
Javascript.js 文件位于我的应用程序文件/文件夹树中,并已embedded resource
在Build Action
属性中定义,如如何将 .jpg 包含到 dll 中所述?
.
我不使用<script src='location'>
标记,因为它不起作用,还因为 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()
正如你所看到的,我对 CSS 文件做了同样的改进,我发现这个文件有一些错误!
我的“伪”HTML代码如下
<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>
评论中的内容是我已经尝试过的,它在 WinForm VB.Net WebView 中不起作用,但在 Chrome 上的纯 HTML 中完美运行。
推荐阅读
- java - 如何使用 servlet 4.0 配置 taglib
- google-analytics - 为什么计时器会生成一个新会话?
- java - 比较两个 XMl 文件忽略元素和属性顺序 Java eclipse
- python - 过滤numpy浮点数组中的整数
- sql-server - 索引是如何插入/更新/删除表的开销?
- phonegap - Phonegap hydra 消息可以编辑吗?
- iphone - iphone上的Foundation 6媒体查询
- qt - QML:ListView 项目扩展
- javascript - 如果 div 包含文本更新另一个 div 内容
- python - 如何使用 cgo 在 golang 中导入 cython 生成的文件