我希望将用户的位置保存在他或她正在浏览的文档中,然后在他们从tombstoning或会话之间返回时将其带回该位置。
我的第一种方法是将浏览器组件包装在滚动查看器中,但事实证明它自己处理滚动,并且滚动查看器从不更改其垂直偏移量。
我的猜测是,浏览器组件中必须嵌入一个滚动查看器或类似的东西。我需要获取垂直偏移量并滚动到一个偏移量。
有没有猜猜怎么到那里的?
我的下一个方法是将javascript和c#痛苦地混杂在一起,找出它们在哪里……
发布于 2010-10-27 17:44:09
由于WebBrowser控件的构建方式,您需要在Javascript中跟踪滚动,然后将位置传递给托管代码以处理该值的存储。
在恢复时,您需要让托管代码将滚动位置传递给Javascript函数以重置滚动位置。
这是理论上的,但我还没有研究过WebBrowser中的javascript滚动事件的功能。那是我唯一能看到可能的问题的地方。
很高兴听到你的进展。
发布于 2010-10-28 20:30:37
我已经接受了Matt的回答,但我想在这里加入一些细节。一旦我完全完成了,我也会写关于我是如何做到这一点的博客。
因为WebBrowser组件本质上是一个黑盒,所以您没有我想要的那么多的控制。话虽如此,获取和设置垂直偏移是可能的。
Javascript允许您请求值,但是不同的浏览器使用不同的变体来请求。在这种情况下,我只需要担心一个浏览器。
首先,我做了几个简单的javascript函数:
function getVerticalOffset() {
return document.body.scrollTop;
}
function setVerticalOffset(offset) {
document.body.scrollTop = offset;
}接下来,我在browser对象上使用InvokeScript方法调用WebBrowser。
当我写完完整的文章后,我会在这里发布更新,并提供我博客的链接。
发布于 2012-02-24 02:19:56
我一直在写一个eBook阅读器,也有类似的问题。设置滚动位置的代码已经很容易找到了。
设置垂直滚动位置代码:
string script = string.Format("window.scrollBy(0,{0});", "put your numeric value here");
wb_view.InvokeScript("eval", script);谷歌在找到获取当前滚动位置值的解决方案方面帮助不大。由于对javascript一无所知,我花了近两个小时才把它弄对。
获取垂直滚动位置的代码:
var vScroll = wb_view.InvokeScript("eval",
"var vscroll = window.pageYOffset; vscroll.toString();");https://stackoverflow.com/questions/4029787
复制相似问题