WebView.InvokeScript始终返回空字符串

时间:2012-10-23 20:33:23

标签: webview windows-8

我遇到了WebView控件的问题。我正在开发Windows 8 Metro Style应用程序,我正在尝试在WebView的内容中调用脚本,但它总是返回空字符串。

我试图将它设为“WebView.InvokeScript(”eval“,new string [] {”document.getElementById('contentDiv')。offsetHeight“}),但它的工作方式相同 - 空字符串.I真的没有猜到这里有什么不对。

public void Sethtml(string html) {
            var toSet = string.Format(Style, html);
            wv.LoadCompleted += wv_LoadCompleted;
            wv.NavigateToString(toSet);

        }

void wv_LoadCompleted(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)
        {
            WebView wv = sender as WebView;
            string height = wv.InvokeScript("heightFun", new string[0]); 
        }
 public static readonly string Style = @"<!DOCTYPE html>
                                               <html>
                                               <head>
                                               <title></title>
                                               <style>
                                               body {{
                                               font-family: Segoe UI; 
                                               }}
                                               </style>
                                               <script type='text/javascript'>
                                                var heightFun = function() {{ 
                                                   return document.getElementById('contentDiv').offsetHeight;
                                                }}
                                               </script>
                                               </head>

                                               <body>
                                                   <div id='contentDiv'>
                                                       {0}
                                                   </div>
                                               </body>";

2 个答案:

答案 0 :(得分:2)

您必须使用window.external.notify发回一个值。 查看论坛帖子: http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/ac390a6a-d4ad-408c-8b13-93f9694cbabe

答案 1 :(得分:2)

通过前面的答案提示解决了这个问题。

确保您的返回值是一个字符串。