Windows phone 7 获取Windows Phone 7 WebBrowser组件垂直偏移量

Windows phone 7 获取Windows Phone 7 WebBrowser组件垂直偏移量,windows-phone-7,Windows Phone 7,我想保留用户在他或她正在浏览的文档中的位置,然后在他们从墓碑记录或会话之间返回时将他们带回该位置 我的第一种方法是将浏览器组件包装在scrollviewer中,但事实证明它处理自己的滚动,scrollviewer从不更改其垂直偏移量 我猜浏览器组件中必须嵌入scrollviewer或类似的东西。我需要得到垂直偏移量并滚动到偏移量 猜猜怎么去那里 我的下一个方法是将javascript和c进行痛苦的混合,以找出它们的位置…因为WebBrowser控件的构建方式,您需要在javascript中跟踪滚

我想保留用户在他或她正在浏览的文档中的位置,然后在他们从墓碑记录或会话之间返回时将他们带回该位置

我的第一种方法是将浏览器组件包装在scrollviewer中,但事实证明它处理自己的滚动,scrollviewer从不更改其垂直偏移量

我猜浏览器组件中必须嵌入scrollviewer或类似的东西。我需要得到垂直偏移量并滚动到偏移量

猜猜怎么去那里


我的下一个方法是将javascript和c进行痛苦的混合,以找出它们的位置…

因为WebBrowser控件的构建方式,您需要在javascript中跟踪滚动,然后将位置传递给托管代码以处理该值的存储

恢复时,需要让托管代码将滚动位置传递给Javascript函数以重置滚动位置

这是理论,但我还没有研究WebBrowser中javascript滚动事件的功能。这是我唯一能看到可能出现问题的地方。

很高兴了解您的进展情况。

由于WebBrowser控件的构建方式,您需要在Javascript中跟踪滚动,然后将位置传递给托管代码以处理该值的存储

恢复时,需要让托管代码将滚动位置传递给Javascript函数以重置滚动位置

这是理论,但我还没有研究WebBrowser中javascript滚动事件的功能。这是我唯一能看到可能出现问题的地方。

很高兴听到你进展如何。

我接受了马特的回答,但我想在这里介绍一些细节。我也会在博客上写下我是如何做到的

由于WebBrowser组件本质上是一个黑匣子,因此您没有我想要的那么多控制权。如上所述,可以获得并设置垂直偏移

Javascript允许您请求值,但不同的浏览器在如何请求上使用不同的变体。对于这种情况,我只需要担心一个浏览器

首先,我制作了两个简单的javascript函数:

function getVerticalOffset() {
    return document.body.scrollTop;
}

function setVerticalOffset(offset) {
    document.body.scrollTop = offset;
}
接下来,我使用浏览器对象上的InvokeScript方法调用WebBrowser


当我完成完整的写作后,我会在这里发布更新,并链接到我的博客。

我已经接受了马特的回答,但我想在这里添加一些细节。我也会在博客上写下我是如何做到的

由于WebBrowser组件本质上是一个黑匣子,因此您没有我想要的那么多控制权。如上所述,可以获得并设置垂直偏移

Javascript允许您请求值,但不同的浏览器在如何请求上使用不同的变体。对于这种情况,我只需要担心一个浏览器

首先,我制作了两个简单的javascript函数:

function getVerticalOffset() {
    return document.body.scrollTop;
}

function setVerticalOffset(offset) {
    document.body.scrollTop = offset;
}
接下来,我使用浏览器对象上的InvokeScript方法调用WebBrowser


当我写完完整的文章后,我会在这里发布更新,并链接到我的博客。

我一直在写一本电子书阅读器,有一个类似的问题。设置滚动位置的代码很容易找到

设置垂直滚动位置的代码:

string script = string.Format("window.scrollBy(0,{0});", "put your numeric value here");
        wb_view.InvokeScript("eval", script);
var vScroll = wb_view.InvokeScript("eval",
            "var vscroll = window.pageYOffset; vscroll.toString();");
谷歌在找到获取当前滚动位置值的解决方案方面帮不了多少忙。由于缺乏javascript方面的知识,我花了将近两个小时才把它弄好

获取垂直滚动位置的代码:

string script = string.Format("window.scrollBy(0,{0});", "put your numeric value here");
        wb_view.InvokeScript("eval", script);
var vScroll = wb_view.InvokeScript("eval",
            "var vscroll = window.pageYOffset; vscroll.toString();");

我一直在写电子书阅读器,有一个类似的问题。设置滚动位置的代码很容易找到

设置垂直滚动位置的代码:

string script = string.Format("window.scrollBy(0,{0});", "put your numeric value here");
        wb_view.InvokeScript("eval", script);
var vScroll = wb_view.InvokeScript("eval",
            "var vscroll = window.pageYOffset; vscroll.toString();");
谷歌在找到获取当前滚动位置值的解决方案方面帮不了多少忙。由于缺乏javascript方面的知识,我花了将近两个小时才把它弄好

获取垂直滚动位置的代码:

string script = string.Format("window.scrollBy(0,{0});", "put your numeric value here");
        wb_view.InvokeScript("eval", script);
var vScroll = wb_view.InvokeScript("eval",
            "var vscroll = window.pageYOffset; vscroll.toString();");

这正是我所说的痛苦的杂碎。。。我不是javascript之王,但我想我必须询问元素的垂直偏移量和可见性。这里的计划B是给标签顺序ID,然后询问每个标签是否可见以及距离顶部有多远

JQuery可以让它更简单,但仍然不如向scrollviewer请求偏移量那么好(或高效)。我不认为我可以直接问“屏幕上可以看到什么?”但可以问每个元素“你在屏幕上吗?”这正是我所说的痛苦的混乱。。。我不是javascript之王,但我想我必须询问元素的垂直偏移量和可见性。这里的计划B是给标签顺序ID,然后询问每个标签是否可见以及距离顶部有多远

JQuery可以让它更简单,但仍然不如向scrollviewer请求偏移量那么好(或高效)。我不认为我可以直接问“屏幕上可以看到什么?”但可以问每个元素“你们在屏幕上吗?”肯定会得到InvokeScript和ScriptNotify的混合结果。此外,浏览器控件有时似乎无法加载CSS。所有文件都来自独立存储。无法想象为什么它只能在某些时候加载失败。嗯。使用InvokeScript和ScriptNotify肯定会得到混合的结果。此外,浏览器控件有时似乎无法加载CSS。所有文件都来自独立存储。无法想象为什么它只能在某些时候加载失败。隐马尔可夫模型。