【问题标题】:WP7 WebBrowser control zoomWP7 WebBrowser 控制缩放
【发布时间】:2011-05-28 20:32:04
【问题描述】:

有些页面太小,在 WebBrowser 控件中难以阅读,是否可以缩放?

【问题讨论】:

    标签: windows-phone-7 webbrowser-control zooming


    【解决方案1】:

    我在请求页面的主体的transform-property 上设置了CSS3scale-函数,因为我真的知道布局并且它可能不会很快改变。

    private void OnBrowserNavigated(object sender, NavigationEventArgs e) {
        var browser = (sender as WebBrowser);
        browser.InvokeScript("eval", 
            "var script = document.createElement('script');" +
            "script.src = \"https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.0.min.js\";" +
            "document.body.appendChild(script);" +
            "$('body').css('transform-origin', '0 0');" +
            "$('body').css('transform', 'scale(2.5)');"             
        );
    }
    

    我通过 jQuery 解决了它,因为我发现它 方式 更方便。我也可以通过纯 javascript 来完成,因为目标浏览器在这里没有问题。

    【讨论】:

      【解决方案2】:

      我使用了以下技巧:

      BrowserControl.LoadCompleted += Browser_dohack;
      private void Browser_dohack(object sender, NavigationEventArgs e)
          {
              string html = BrowserControl.SaveToString();
              string hackstring = "<meta name=\"viewport\" content=\"width=320,user-scalable=yes\" />";
              html = html.Insert(html.IndexOf("<head>", 0) + 6, hackstring);
              BrowserControl.NavigateToString(html);
              BrowserControl.LoadCompleted -= Browser_dohack;
          }
      

      【讨论】:

        【解决方案3】:

        如果您可以控制 html,则可以设置视口的 initial-scale。更多背景在这里。

        The IE Mobile Viewport on Windows Phone 7

        【讨论】:

        • 不幸的是,这是第 3 方页面,如果没有其他选择,我可以尝试让他们进行更改...
        • 在投票支持您找到此属性后,我阅读了您链接上的详细文字:*注意:在初始版本中,Windows Phone 7 的 IE Mobile 不支持初始规模、最大规模,或最小尺度。 :(
        • 我无法向您保证支持的状态,但在 WP7 中它是 IE7“和一半”,而在 Mango 7.1 中据说是 IE8“和一点”。他们可能在最新版本中添加了对此的支持
        【解决方案4】:

        是的,假设您没有阻止用户缩放,您可以像在完整浏览器中一样点击缩放或使用捏合/拉伸。

        【讨论】:

        • 我需要在 .xaml 或 .cs 中以编程方式完成
        • @Janci 这是不可能的。如果您展示的是您的内容,请适当地设置它以在手机上显示。
        • 我需要同样的东西(让 WebBrowser 以与用户双击呈现的网页时相同的方式做出反应),但由代码触发。是否可以将鼠标单击事件放在 Silverlight 事件队列或其他东西中(这里有点 win32 的想法......)?
        • @peSHIr - 不,目前 (7.0-7.5) 无法注入事件,也无法调用该行为。在 7.1/7.5 API 中,您可能想尝试入侵 PanZoomContainer(WebBrowser 控件的浅可视子项),但您不太可能成功,大部分 PZC 的逻辑被标记为内部/私有,因此无法访问(我的意思是,不可调用)用于 WP7 反射
        • @Matt-我认为这实际上是可能的-您可以通过使用 InvokeScript 方法执行 JavaScript 代码来访问和修改页面的内容。使用该方法,您甚至可以注入 jQuery 库,并且使用 jQ 可以轻松修改页面。我不知道,修改元标记是否会导致页面重新呈现。元标记可能会在第一次渲染时只读。如果您想尝试 InvokeScript,请查看 stackoverflow.com/questions/7375705/… - 使用 InvokeScript 很棘手
        猜你喜欢
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 2011-09-16
        • 2015-01-14
        • 2014-07-29
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多