2013-05-04 80 views
4

我想爲大型MATLAB應用程序創建一些HTML文檔,主要在MATLAB幫助瀏覽器中從11b開始的任何版本的MATLAB中查看。這將有一些自定義的CSS(但沒有什麼非常複雜的)。檢測MATLAB幫助瀏覽器

但是,我還想在其他瀏覽器中查看相同的文檔。我關心Chrome和IE9和10,儘管支持其他瀏覽器會受到歡迎。我想的文檔,

  1. 看本質在所有的瀏覽器,包括MATLAB幫助瀏覽器相同的,但是當在MATLAB幫助瀏覽器呈現
  2. 在幾個方面會有所不同 - 特別是,我想matlab:鏈接被顯示並且行爲不同,因爲它們在MATLAB幫助瀏覽器之外不受支持。

問題1:我遇到困難,甚至有1個,爲儘管我的CSS的簡單的MATLAB的幫助瀏覽器,它支持哪些部分CSS似乎不可預測的,它似乎有很大差異跨MATLAB版本。我猜測它根本沒有記錄。有沒有人有任何關於在MATLAB幫助瀏覽器中使用CSS的經驗/提示?

問題2:我希望能夠以某種方式自動檢測matlab:協議是否在觀看瀏覽器的支持,但它從瀏覽其它的StackOverflow似乎回答說這是不可能的。鑑於我需要支持Chrome,甚至無法嘗試遵循matlab:鏈接並檢測它是否失敗,因爲顯然Chrome無法正常運行。噓。所以我的下一個想法是使用JavaScript來檢測瀏覽器的UserAgent。 MATLAB 11b將自己報告爲Mozilla4.0,ICEbrowser,而13a給出了Mozilla4.0和Trident6。我不完全確定這些是什麼 - 我猜他們是第三方基於Java的瀏覽器組件,其行爲與Mozilla類似,MathWorks已經在11b和13a之間更改了組件。

如果我檢測到UserAgent並假定包含字符串ICEBrowserTrident的任何東西可能足以區分MATLAB幫助瀏覽器以用於大多數目的?很顯然,我必須跟上UserAgent字符串的後續版本。

感謝您的建議!

回答

3

MATLAB的幫助瀏覽器的能力相差很大,不僅不同的MATLAB之間版本,而且在不同的操作系統之間,甚至不同的架構之間(最近的64位版本通常都有一個特別糟糕的瀏覽器)。

我們使用用戶代理來提供MATLAB特定的網頁。下面是其中一些人的名單:

R2010b/R2011b, 32bit, WinXP: 
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060705 

R2010b/R2011b, 32bit, Win7: 
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.8) Gecko/20060705 

R2010b, 64bit, Win7: 
Mozilla/5.0 (Java 1.6.0_17; Windows 7 6.1 amd64; de_DE) ICEbrowser/v6_0_2 

R2011b, 64bit, Win7: 
Mozilla/5.0 (Java 1.6.0_17; Windows 7 6.1 amd64; de_DE) ICEbrowser/v6_0_2 

R2012a, 32bit, Win7: 
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko 

R2012a, 32bit, WinXP: 
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko 

R2012a, 64bit, Win7: 
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2;  .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0) 

R2012b, 32bit, Win7: 
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko 

R2012b, 64bit, Win7: 
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2;  .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Tablet PC 2.0) 

R2010b, 32bit, Linux: 
Mozilla/5.0 (Java 1.6.0_17; Linux 2.6.32-33-generic i386; en_US) ICEbrowser/v6_0_2 

請注意,你不能簡單地做針對這些字符串比較,因爲字符串的某些部分的改變取決於客戶端機器上(如語言代碼)。

另請注意,除了呈現HTML和CSS之外,其他功能差異很大。特別是支持JavaScript和HTTP身份驗證。

+0

謝謝弗洛裏安 - 我的道歉,前一陣子我應該接受了。 – 2013-08-13 12:17:28

+0

@SamRoberts:沒問題,很高興我能幫到你! – 2013-08-13 14:22:39

2

icebrowser是一個支持html/javascript的隨機子集的java html渲染器。從2012年的主要幫助和2013年的「補充軟件」幫助,他們已經切換到一個客戶端,這是一個簡單的jni包裝本地瀏覽器,所以你得到三叉戟(= Internet Explorer)在Windows上,webkit(= safari )在Linux上的mac和gecko(= firefox)。不幸的是,他們沒有改變用戶代理有任何明顯的像matlab。 這意味着從2013a開始,我們可以使用具有真正瀏覽器功能的css/javascript渲染,但可以獲得您在打開的網頁上遇到的所有跨瀏覽器問題。 Wheras在2013年之前,瀏覽器的功能非常有限,但您只需要擔心一個瀏覽器。

我一直在尋找自己的一種可靠的方法,如果MATLAB來檢測:協議支持,但所有我發現了你的問題:-)