[英]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.