检测MATLAB帮助浏览器

时间:2013-05-04 00:12:07

标签: matlab

我想为大型MATLAB应用程序创建一些HTML文档,主要在MATLAB帮助浏览器中,在11b以上的任何版本的MATLAB中查看。这将有一些自定义CSS(但没有什么非常复杂的。)

但是,我也希望在其他浏览器中可以查看相同的文档。我关心Chrome和IE9和10,但欢迎支持其他浏览器。我想要文档

  1. 在所有浏览器中看起来基本相同,包括MATLAB帮助浏览器,但
  2. 在MATLAB帮助浏览器中显示时,在某些方面看起来有所不同 - 特别是,我希望matlab:链接显示和行为不同,因为在MATLAB帮助浏览器之外不支持它们。
  3. 问题1:即使使用1,我也遇到了困难,因为尽管我的CSS很简单,但MATLAB帮助浏览器似乎无法预测它支持的CSS部分,并且似乎有所不同跨MATLAB版本很多。我猜它根本没有记录。有没有人有任何关于在MATLAB帮助浏览器中使用CSS的经验/提示?

    问题2:我希望能够以某种方式自动检测查看浏览器是否支持matlab:协议,但是通过浏览其他StackOverflow答案,这似乎是不可能。鉴于我需要支持Chrome,因此甚至无法尝试关注matlab:链接并检测其是否失败,因为显然Chrome会无声地失败。嘘。所以我的下一个想法是使用JavaScript来检测浏览器的UserAgent。 MATLAB 11b将自己报告为带有ICEbrowser的Mozilla4.0,而13a给出带有Trident6的Mozilla4.0。我不完全确定它们是什么 - 我猜它们是基于Java的第三方浏览器组件,其行为与Mozilla类似,而且MathWorks已经在11b和13a之间更改了组件。

    如果我检测到UserAgent并假设包含字符串ICEBrowserTrident的任何内容,这可能足以区分MATLAB帮助浏览器以用于大多数目的吗?显然,我必须及时了解13A版之后的UserAgent字符串。

    感谢您的建议!

2 个答案:

答案 0 :(得分: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身份验证。

答案 1 :(得分:2)

icebrowser是一个java html渲染器,支持随机的html / javascript子集。从2012b开始获取主要帮助,从2013a开始获取“补充软件”帮助他们切换到客户端,这是一个围绕本地浏览器的瘦jni包装器,所以你在Windows上获得三叉戟(= Internet explorer),webkit(= safari) )在linux上的mac和gecko(= firefox)上。不幸的是,他们没有将用户代理更改为matlab之类的明显内容。 这意味着从2013a开始,我们可以使用具有真实浏览器功能的css / javascript渲染,但获得您在开放网络上的所有跨浏览器问题。在2013年之前,浏览器的功能更加有限,但您只需要担心一个浏览器。

我正在寻找一种可靠的方法来检测matlab:协议是否得到支持,但我找到的只是你的问题: - )