在Windows 8 webview中禁用滚动并删除滚动条

时间:2013-07-24 13:51:18

标签: javascript windows-8 webview scroll

您好,作为Windows 8 metro应用程序的一部分,我使用了webview,我想禁用水平滚动,因此用户不会错误地离开信息。

我已经尝试将其放在滚动查看器中,然后禁用水平滚动,但滚动条和webviewer中的滚动处于活动状态。

用户仍然必须能够使用webviewer,因此禁用它的所有输入都不会工作.. :-)

希望有人有一个简单的解决方案..

编辑:

正如评论中所写,我一直在尝试使用JavaScript来取得成功。

使用

.InvokeScript("eval", new string[] { "document.body.scroll = 'no';" });

.InvokeScript("eval", new string[] { "document.body.style.overflow ='hidden';" });

2 个答案:

答案 0 :(得分:0)

看起来不可能..

最后我最终使用

string html = webBrowser1.InvokeScript("eval", new string[] { "document.documentElement.outerHTML;" });

获取页面的来源,然后使用regex.replace将html更改为不允许滚动,不是一个非常优雅的解决方案,并不是非常普遍但对我有用。

   string resultString = null;
        try
        {
            resultString = Regex.Replace(html, "<YOUR REGEX HERE, RegexOptions.Singleline);
        }
        catch (ArgumentException ex)
        {
            string errorMessage1 = ex.ToString();
            var messageDialog = new MessageDialog(errorMessage1);
            await messageDialog.ShowAsync();
        }

答案 1 :(得分:0)

 XAML

<Grid>

<WebView
Height="400"
NavigationCompleted="theWebView_NavigationCompleted"
x:Name="theWebView" Source="http://blogs.msdn.com/ashish"
></WebView>

 </Grid>

Code

private
async void theWebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs
args)

        {

            string returnStr = await
theWebView.InvokeScriptAsync("eval", new string[] {
SetBodyOverFlowHiddenString });

        }

        string SetBodyOverFlowHiddenString =
@"function SetBodyOverFlowHidden()

        {

            document.body.style.overflow =
'hidden';

            return 'Set Style to hidden';

        }

        // now call the function!enter code here

        SetBodyOverFlowHidden();";