windows phone 8 如何在网页浏览器控件中显示htmlcontent 字符串?

How to display htmlcontent string in web browser control in windows phone 8?

我有 Web 浏览器控件,我在其中使用 javascript 和 NavigateToString() 方法显示 Htmlcontent。它工作正常,除非在我获取 Htmlcontent 的服务器上添加了 table 标记。到目前为止我已经尝试了下面的代码

string notifyJS = @"<script type='text/javascript' language='javascript'>
                            window.onload = function() {
                                var links = document.getElementsByTagName('a');
                                for(var i=0;i<links.length;i++) {
                                    links[i].onclick = function() {
                                        window.external.Notify(this.href);
                                    }
                                }
                            }
                        </script>";


        var htmlContent = string.Format("<html><head>{2}</head>" +
                                                 "<body style=\"margin:25px 25px 75px;padding:0px;background-color:{1};\" " +
                                                 "{0}</body></html>",
                                                 _selectedTab.HTML_CONTENT,
                                                 _selectedTab.TAB_BG_COLOR,
                                                 notifyJS);
        //var htmlContent = _selectedTab.HTML_CONTENT;

        HtmlContentView.NavigateToString(htmlContent);
        HtmlContentView.ScriptNotify += HtmlContentView_ScriptNotify;
        HtmlContentView.Navigating += HtmlContentView_Navigating;
        HtmlContentView.LoadCompleted += HtmlContentView_LoadCompleted;
    }

    void HtmlContentView_LoadCompleted(object sender, NavigationEventArgs e)
    {
        HtmlContentView.InvokeScript("execScript", new string[] { "document.onselectstart=function(){return false;};document.ondragstart=function(){return false;}" });

    }

    void HtmlContentView_Navigating(object sender, NavigatingEventArgs e)
    {
        e.Cancel = true;
    }

    void HtmlContentView_ScriptNotify(object sender, NotifyEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.Value))
        {
            string href = e.Value.ToLower();
            if (href.StartsWith("mailto:"))
            {
                EmailComposeTask email = new EmailComposeTask();
                email.To = href.Replace("mailto:", string.Empty);
                email.Show();
            }
            else if (href.StartsWith("tel:"))
            {
                PhoneCallTask call = new PhoneCallTask();
                call.PhoneNumber = href.Replace("tel:", string.Empty);
                call.Show();
            }
            else
            {
                WebBrowserTask browserTask = new WebBrowserTask();
                browserTask.Uri = new Uri(e.Value);
                browserTask.Show();

            }
        }
    }

谁能提出为什么 table 标签没有被正确识别的原因?我在 Android 中进行了同样的检查,它工作得非常好。

请任何人提出解决方案。

WP8 中浏览器控件的 NavigateToString() 函数无法正常工作是一个已知问题。尝试使用 CSS 和 DIV,因为目前没有其他解决方案。

我希望这能回答你的问题。

最后,我从中得到了解决方案link Solution

我已经根据他们的建议添加了元标记,效果很好。

var htmlContent = string.Format("<html><head>{2}<meta name='viewport' content='inital-scale=1.0,maximum-scale=1.0, user-scalable=no' /></head>" +      
                                                 "<body style=\"background-color:{1};\"" +
                                                 "{0}</body></html>",
                                                 _selectedTab.HTML_CONTENT,
                                                 _selectedTab.TAB_BG_COLOR,
                                                 notifyJS);
        //var htmlContent = _selectedTab.HTML_CONTENT;

        HtmlContentView.NavigateToString(htmlContent);

希望对大家有所帮助。