在WebView UWP中调用Javascript
我想将以下内容添加到我的webview在WebView UWP中调用Javascript,webview,uwp,Webview,Uwp,我想将以下内容添加到我的webview <html> <body> <h1>My First Heading</h1> <div id="mydiv" style="width: 100%; height: 100%;" ></div> <script src="https://mydomain/Embed.js" type="t
<html>
<body>
<h1>My First Heading</h1>
<div id="mydiv" style="width: 100%; height: 100%;" ></div>
<script src="https://mydomain/Embed.js" type="text/Javascript">
</script>
</body>
</html>
我的第一个标题
我的代码如下所示
<WebView x:Name="wView"></WebView>
代码隐藏
wView.NavigateToString(
@"<html> <body> <h1>My First Heading</h1> <div id=""mydiv"" style=""width: 100%; height: 100%;"" ></div> <script src=""https://mydomain/Embed.js"" type=""text/Javascript""> </script> </body> </html>");
wView.NavigateToString(
@“我的第一个标题”);
使用这种方法,我无法在
Embed.js
中运行任何javascript。仅显示H1标记内的内容。如何确保webview内部的javascript(在我的例子中是Embed.js)得到执行?根据webview.NavigateToString()
的描述:
NavigateToString支持引用外部文件(如CSS、脚本、图像和字体)的内容。但是,它没有提供一种以编程方式生成或提供这些资源的方法
因此,使js有效的更好方法是在项目中创建HTML文件,将HTML内容写入其中,并按以下方法使用:
wView.Source=新Uri(“ms appx-web:///Html/myHtmlFile.html");
更新
如果需要动态修改HTML文件的内容,则ms appx web
不合适,因为它指向包中的文件,并且不能在运行时直接修改包中的文件
根据。您可以将LocalFolder
子文件夹中的html文本保存为临时文件,并引导它通过ms appdata:
var htmlFolder=wait ApplicationData.Current.LocalFolder.CreateFolderAsync(“html”,CreationCollisionOption.OpenIfExists);
var localFile=await htmlFolder.CreateFileAsync(“temp.html”,CreationCollisionOption.ReplaceExisting);
wait FileIO.WriteTextAsync(localFile,html);
导航(新Uri(“ms-appdata:///local/html/temp.html"));
p.S.临时文件必须存储在LocalFolder的子文件夹中,并且在我的场景中不能有指向同一级别的链接,在HTML中,我必须嵌入一些动态内容,因此我无法将其保存为HTML。如果我在每次加载webview之前都使用ao,那么我必须以编程方式更改HTML文件的内容,这不是正确的方法。有没有其他方法可以做到这一点?您好,我修改了我的答案,请检查一下。