在IE中派生或复制用户浏览器会话
Fork or copy a users browser session in IE
是否可以在Internet Explorer插件中派生用户会话(或执行类似操作)?
当用户单击工具栏中的按钮时,我想处理用户所在的页面。为了避免打扰用户浏览,我想";复制";这样我就可以在后台解析和处理页面了。处理过程可能包括在谷歌搜索中加载结果链接的内容,如果点击按钮的话。
所以,我基本上想要的是模仿Ctrl+N,但对用户隐藏窗口,这样他们就不会被打断。
正如你所看到的,如果你在http://www.snee.com/xml/crud/posttest.html并按Ctrl+N,发布的所有内容仍将显示在新窗口中,但不会发布两次数据。
我想以某种方式复制IWebBrowser2
,但是:
- 我不确定这是否可能(我在MSDN上找不到任何信息)
- 我不知道它是否也复制了会话
创建一个新的IWebBrowser2
实例并简单地导航到当前URL并不是一个有效的解决方案,因为POST
变量当然不会被遗留下来。
BHO或插件可以工作。有这么多的选择来获得来源,这有点像。选择投毒。查找IDocHostUIHandler以更改行为。IHTMLElementCollection在浏览器中解析页面。目前我能想到的最简单的事情是…
将当前内容保存到流中。与获取/查看源代码相同。
//#包括HRESULT SaveDocumenttoStream(IWebBrowser*pWebBrowser,IStream*pStream){HRESULT小时;IDispatch*pHtmlDoc=NULL;IPersistStreamInit*pPersistStreamInit=NULL;hr=pWebBrowser->get_Document(&pHtmlDoc);如果(成功(小时)&;pHtmlDoc){//查询IPersistStreamInit。hr=pHtmlDoc->QueryInterface(IID_IPersistStreamInit,(无效**)&pPersistStreamInit);if(成功(小时)){hr=pPersistStreamIni->Save(,True);pPersistStreamInit->Release();}pHtmlDoc->Release();}
您提供浏览器和流。HTH-
--
Michael
有趣的想法。您可以复制DOM holus bolus,然后用该副本替换新窗口的DOM吗。这只是一个猜测。在这一点上,我和你一样蒙在鼓里。
我认为这是不可能的,因为你必须考虑太多细节,有些东西总是会坏掉的。仅举两个例子:
- 您必须注意嵌入式web浏览器(框架、IFRAME)。我认为复制主页只会复制他们的URL,这样当你在某个地方恢复序列化的主页时,他们的内容就会被重新加载,因此页面的内容会发生变化。因此,您必须转到框架级别
- 您必须注意那些在背后试图连接到某个服务器以发送已由您分叉的页面发送的数据的脚本。因此,您可以更改页面的逻辑
因此,实时处理是捕捉用户所看到的状态的唯一真正解决方案;如果这是你想要实现的。如果你不需要那么多细节,这可能会更容易做到。
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 当用户超过按钮点击限制时报告
- Visual C++(VS2017)中用户定义的转换不明确
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 我的web应用程序的用户需要在浏览器上手动启用本机客户端吗
- 获取默认浏览器用户代理
- 如何在Qt的默认用户浏览器中打开链接
- 如何在不混淆的情况下监视.NET web浏览器控件上的用户操作
- 在IE中派生或复制用户浏览器会话