Xamarin.Forms UWP - 将WebView.Source设置为HtmlWebViewSource两次处理脚本

时间:2018-05-08 14:16:04

标签: xamarin webview xamarin.forms uwp xamarin.uwp

在Xamarin.Forms UWP中,如果我WebView的{​​{1}}属性设置为Source,则按预期工作。但是,如果将UrlWebViewSource属性设置为键入Source,其中HtmlWebViewSource属性设置为字符串,则HTML中的任何Html都将被处理两次

我已经建立了一个全新的Xamarin.Forms项目,其中MainPage的<script>设置为代码隐藏中的WebView。我已对其进行了设置,以便在设置ContentWebView.SourceUrlWebViewSource之间轻松切换:

HtmlWebViewSource

问题是脚本执行两次,可能有几个原因,但对于一个问题,如果我使用JavaScript将内容附加到正文,那么它将被追加两次 - not 我想要什么。这是我使用的测试HTML代码:

public MainPage()
{
    InitializeComponent();

    var urlSource = new UrlWebViewSource { Url = "https://htmlpreview.github.io/?https://github.com/joelbyrd/external-resources/blob/master/storefulfillment/Printing/Packing/GNC-Pick.htm" };
    var htmlStringSource = new HtmlWebViewSource
    {
        Html = @"<!doctype html><html lang='en'><head><meta charset='utf-8'><meta http-equiv='x-ua-compatible' content='ie=edge'><meta name='viewport' content='width=device-width, initial-scale=1'><title>Test</title></head><body><div id='log'></div><p>some text</p><script>document.getElementById('log').innerHTML += `<p>Testing</p>`;</script></body></html>"
    };

    var webView = new WebView
    {
        Margin = new Thickness(0, 20, 0, 0),
        Source = urlSource, // displays as expected
        //Source = htmlStringSource // <script>'s are processed twice, appending "Testing" to the body twice
    };

    Content = webView;
}

当我将<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Test</title> </head> <body> <div id="log"></div> <p>some text</p> <script> document.getElementById('log').innerHTML += `<p>Testing</p>`; </script> </body> </html> 设置为WebView.Source,并将UrlWebViewSource属性设置为&#34; https://htmlpreview.github.io/?https://github.com/joelbyrd/external-resources/blob/master/storefulfillment/Printing/Packing/GNC-Pick.htm&#34;时,我得到以下预期输出:

enter image description here

但是当我将Url设置为WebView.Source时,HtmlWebViewSource属性设置为上面的字符串(空格被取出并正确转义),我得到以下内容:

enter image description here

你可以看到&#34;测试&#34;已被添加到身体两次。这个只发生在UWP 中,所以我怀疑这是一个错误。任何人都可以告诉我这里发生了什么,以及是否有解决方法?

0 个答案:

没有答案