2010-02-04 133 views
7

有沒有什麼辦法可以告訴我的網站是否被webbrowser控件的一個實例訪問?是否有可能通過用戶代理w/php來識別它?或者,也許一些JavaScript黑客?或者它與服務器端的常規IE完全相同?檢測WebBrowser控件

+0

它_is_ IE。就我所知,這是完全相同的代碼。 – 2010-02-04 00:28:11

+1

「Internet Explorer」基本上是一個圍繞Web瀏覽器控件的薄UI。 – 2010-02-04 00:31:44

+0

根據[此回答](https://stackoverflow.com/a/4357982/1009922)和[這個更新的文章](https://blogs.msdn.microsoft.com/patricka/2015/01/12/controls-webbrowser-control-compatibility /),WebBrowser控件在其用戶代理字符串中顯示「MSIE 7.0」。我認爲這與實際的IE7瀏覽器或更新的版本7兼容模式下的IE瀏覽器無法區分。 – ConnorsFan 2017-07-18 14:26:11

回答

3

只是一個愚蠢的想法,但難道你只是比較window.outerHeightwindow.innerHeight,衡量IE的預期差異,如果它不是它的WebBrowser控制?

多數民衆贊成在地獄,但可以在大多數情況下工作。還有其他的東西你可以嘗試去做,在IE中以某種方式工作的東西,但可能不會在WebBrowser控件中工作。

例如:

  • 要下載的文件
  • 打開一個新窗口/標籤
+0

我不明白這是如何可靠的。 'outerHeight'和'innerHeight'之間的區別受用戶喜好的影響。顯示或隱藏書籤欄或菜單將影響差異。 (我在IE中統計了4個易於訪問的選項,這些選項會影響差異。)打開或關閉調試面板也會影響它。縮放也會影響它。 (我沒有想到,但我們在這裏)。然後有一些像一般的用戶界面偏好。使用與默認不同的主題可能會改變這兩個數字之間的差異。 – Louis 2017-07-20 15:28:19

2

看來,當任何分配給window.external特定引發錯誤。所以支票可能類似於

const isWebBrowserControl =() => { 
    try { 
    window.external = window.external 
    return false 
    } catch (error) { 
    if (error.message === 'I don\'t remember this. Some specific error message.') { 
     return true 
    } 
} 

雖然這是一個潛在的「破壞性」檢查。但我真的不覺得它會導致任何問題。