[英]Fork or copy a users browser session in IE
是否可以在Internet Explorer插件中分叉用户会话(或执行类似操作)?
我想在用户单击工具栏中的按钮时处理用户所在的页面。 为了避免中断用户浏览,我想“复制”所有内容,以便我可以在后台解析和处理页面。 处理可能涉及诸如在Google搜索上加载结果链接的内容之类的内容,如果这是点击按钮的位置。
所以 - 我基本上想要的是模仿“ Ctrl+N
”但是隐藏用户的窗口,这样它们就不会被打断。
如您所见,如果您在http://www.snee.com/xml/crud/posttest.html上填写并提交表格并按“ Ctrl+N
”,则发布的所有内容仍会显示在新窗口中,但它不会发布两次数据。
我想以某种方式复制IWebBrowser2
,但是:
创建IWebBrowser2
的新实例并简单地导航到当前URL不是一个有效的解决方案,因为POST
变量当然不会被转移。
BHO或插件可以工作。 有很多选择来获取源,它是有点。 选择你的平衡。 查找IDocHostUIHandler以更改行为。 IHTMLElementCollection在浏览器中解析页面。 我现在能想到的最简单的事情是....
将当前内容保存到流中。 与获取/查看源相同。
// #include HRESULT SaveDocumenttoStream(IWebBrowser* pWebBrowser, IStream* pStream) { HRESULT hr; IDispatch* pHtmlDoc = NULL; IPersistStreamInit* pPersistStreamInit = NULL; hr = pWebBrowser->get_Document( &pHtmlDoc ); if ( SUCCEEDED(hr) && pHtmlDoc) { // Query for IPersistStreamInit. hr = pHtmlDoc->QueryInterface( IID_IPersistStreamInit, (void**)&pPersistStreamInit ); if ( SUCCEEDED(hr) ) { hr = pPersistStreamIni->Save(, True); pPersistStreamInit->Release(); } pHtmlDoc->Release(); }
您提供浏览器和stream.HTH
-
迈克尔
我认为这是不可能的,因为你必须考虑这么多细节,总会有所不同。 仅举两点:
因此,实时处理是用户在看到状态时捕获状态的唯一真正解决方案; 如果这是你想要实现的目标。 如果您不需要那么多细节,那么可能会更容易。
有趣的想法。 你可以复制DOM holus-bolus,然后用副本替换一个新窗口的DOM。 这只是猜测。 在这一点上,我和你一样黑暗。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.