2010-03-31 54 views
2

好的,所以我們有一個在線下載商店通過我們的軟件訪問。最近我們已經請求允許通過普通瀏覽器進行下載,並且只需要打開一個下載頁面就很容易。問題在於,有兩個下載鏈接的人會感到困惑,一個用於軟件,另一個用於他們的網絡瀏覽器,所以我們想區分這兩者,只顯示相關的下載鏈接。如何區分.net WebBrowser組件和實際的瀏覽器?

從我收集到的.net WebBrowser組件與IE相同,並使用相同的用戶代理,因此我們不能使用它,除非我們使軟件中的WebBrowser繼承以使其使用特定的用戶代理。這是更明智的選擇,但我們不得不推出另一個更新的版本,這不太理想。

有沒有其他方法可以判斷某人是否通過.net組件訪問網站?我唯一的選擇是將商店複製到具有不同下載鏈接的不同地址併發送給那裏的人。這又是可行的,但並不理想。

回答

1

檢查window.external是否爲空。 IE實現window.external具有像AddSearchProvider這樣的方法,其中大部分時間WebBrowser.ObjectForScripting爲null。

+0

這工作得很好,即使在IE6虛擬硬盤上微軟提供。 – Septih 2010-04-06 09:38:21

0

我不確定是否有更好的方法來做到這一點,但這裏有一個想法... WebBrowser控件有一個屬性Document,它允許您訪問表示已加載文檔的DOM對象(在頁面之後被加載)。該對象有InvokeScript method,您可以使用該對象在加載的頁面中運行一些JavaScript。

你可以寫一個簡單的JavaScript函數,說hideWebDownload()這將在應用程序在本地運行的視圖切換到使用的視圖,然後從你的WinForms應用程序調用它承載WebBrowser控制:

webCtrl.Document.InvokeScript("hideWebDownload"); 

默認該頁面的視圖將顯示web的下載鏈接,並在本地應用程序中調用此功能將視圖切換到本地下載鏈接。

0

將您的軟件傳遞給URL的查詢字符串中的不可見(對用戶)值。

瑣碎看看是否存在。