【发布时间】:2013-12-11 10:21:26
【问题描述】:
我正在开发一个应用程序,我需要将主要为 Internet Explorer 设计的遗留代码与 Firefox 一起使用。
我遇到的问题是嵌套在表格结构中的 iframe 不会扩展到表格单元格的整个高度。由于 Web 应用程序的大小,已决定创建一个 JavaScript shim 来解决此问题,而不是进行标记更改。仅当浏览器是 Firefox 时,此 shim 才会包含在页面中,因为在我测试过的其他浏览器中不存在此问题。
所以我的问题是:
Using a classic ASP VBScript function how can I identify Firefox browsers, this should include any edge cases?
到目前为止,我有以下检查用户代理的字符串值“Firefox”。有没有这种方法不起作用的情况?
function IsFirefox()
dim userAgent : userAgent = Request.ServerVariables("HTTP_USER_AGENT")
dim locationOfFirefox : locationOfFirefox = InStr(1, userAgent, "Firefox", 1)
IsFirefox = (locationOfFirefox > 0)
end function
【问题讨论】:
-
好吧,派生的浏览器将无法工作。您确实需要渲染引擎 ID (Gecko),而不是浏览器品牌名称。
-
不要尝试识别浏览器,而是尝试识别浏览器的功能。即 win 8.1 机器上的 Internet Explorer 11 将给这个用户代理字符串:“Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MDDRJS; rv:11.0) like Gecko”所以当你寻找“Gecko”时识别 Firefox 你的脚本会失败
-
您的代码很好,但有风险。如果未来的 Chrome 版本会引入同样的错误/行为怎么办?你真的可以更好地解决这个客户端,找到嵌套 iframe 的解决方法,例如使用普通的
<div>元素并使用简单的jQuery.load()或.get()方法加载它们的内容。这些天<iframes>内部页面真的不需要了。 -
@ShadowWizard 不幸的是,我正在开发一个遗留系统,该系统在
3589 files中找到了10246 iframes,因此目前确实不可能在没有 iframe 的情况下重构代码。 -
this 可能有同样的问题。
标签: browser vbscript asp-classic user-agent