确定经典应用程序的设备 asp
Determine device for application in classic asp
我想确定我的应用程序使用了哪个设备。我想看看是不是
- Phone
- Table
- 电脑
尽管只有几个有效的选项(我们对所有内容都有固定的设备),但我想让它尽可能动态化。
我在这里发现了一个类似的问题:Detect mobile user agent from classic ASP and redirect on session start
我对此很熟练并编写了以下函数,以检查当前访问我网站的设备。但是,我认为它有点混乱,因为它是如此 "static" 当涉及到正则表达式时
这是我想出的:
public function checkUserAgent()
Set Regex = New RegExp
With Regex
.Pattern = "(Mobile\sSafari|Linux;\sAndroid)"
.IgnoreCase = True
.Global = True
End With
Match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If Match then
user_agent = "Phone"
End If
Set Regex = New RegExp
With Regex
.Pattern = "(windows\sNT)"
.IgnoreCase = True
.Global = True
End With
Match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If Match then
user_agent = "PC"
End If
Set Regex = New RegExp
With Regex
.Pattern = "(ipad)"
.IgnoreCase = True
.Global = True
End With
Match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If Match then
user_agent = "Tablet"
End If
end function
我现在的问题:RegExp 的代码似乎是多余的。我将如何改进它?我怎么可能使它更紧凑,结果相同?我需要获取用户代理类型,以便我可以更新我的数据库并继续计数,使用了多少设备/类型。
我会更像这样构建它。
dim device
device = checkUserAgent
response.write device
function checkUserAgent()
dim user_agent
user_agent = Request.ServerVariables("HTTP_USER_AGENT")
if reTest(user_agent, "(Mobile\sSafari|Linux;\sAndroid)") then
checkUserAgent = "Phone"
elseif reTest(user_agent, "(windows\sNT)") then
checkUserAgent = "PC"
elseif reTest(user_agent, "(ipad)") then
checkUserAgent = "Tablet"
end if
end function
function reTest(subject, pattern)
dim re, returnVal
returnVal = false
Set re = New RegExp
With re
.Pattern = pattern
.IgnoreCase = True
.Global = True
End With
If re.test(subject) then
returnVal = true
End If
Set re = Nothing
reTest = returnVal
end function
或者,如果您对设备类型更加细化并最终拥有更多设备类型,使用字典可能会更容易管理。在那种情况下,checkUserAgent 可能看起来更像:
function checkUserAgent()
dim user_agent, d
user_agent = Request.ServerVariables("HTTP_USER_AGENT")
set d = Server.CreateObject("Scripting.Dictionary")
d.add "Phone", "(Mobile\sSafari|Linux;\sAndroid)"
d.add "PC", "(windows\sNT)"
d.add "Tablet", "(ipad)"
for each k in d.keys
if (reTest(user_agent, d.item(k))) then
checkUserAgent = k
exit for
end if
next
end function
我想确定我的应用程序使用了哪个设备。我想看看是不是
- Phone
- Table
- 电脑
尽管只有几个有效的选项(我们对所有内容都有固定的设备),但我想让它尽可能动态化。
我在这里发现了一个类似的问题:Detect mobile user agent from classic ASP and redirect on session start
我对此很熟练并编写了以下函数,以检查当前访问我网站的设备。但是,我认为它有点混乱,因为它是如此 "static" 当涉及到正则表达式时
这是我想出的:
public function checkUserAgent()
Set Regex = New RegExp
With Regex
.Pattern = "(Mobile\sSafari|Linux;\sAndroid)"
.IgnoreCase = True
.Global = True
End With
Match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If Match then
user_agent = "Phone"
End If
Set Regex = New RegExp
With Regex
.Pattern = "(windows\sNT)"
.IgnoreCase = True
.Global = True
End With
Match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If Match then
user_agent = "PC"
End If
Set Regex = New RegExp
With Regex
.Pattern = "(ipad)"
.IgnoreCase = True
.Global = True
End With
Match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If Match then
user_agent = "Tablet"
End If
end function
我现在的问题:RegExp 的代码似乎是多余的。我将如何改进它?我怎么可能使它更紧凑,结果相同?我需要获取用户代理类型,以便我可以更新我的数据库并继续计数,使用了多少设备/类型。
我会更像这样构建它。
dim device
device = checkUserAgent
response.write device
function checkUserAgent()
dim user_agent
user_agent = Request.ServerVariables("HTTP_USER_AGENT")
if reTest(user_agent, "(Mobile\sSafari|Linux;\sAndroid)") then
checkUserAgent = "Phone"
elseif reTest(user_agent, "(windows\sNT)") then
checkUserAgent = "PC"
elseif reTest(user_agent, "(ipad)") then
checkUserAgent = "Tablet"
end if
end function
function reTest(subject, pattern)
dim re, returnVal
returnVal = false
Set re = New RegExp
With re
.Pattern = pattern
.IgnoreCase = True
.Global = True
End With
If re.test(subject) then
returnVal = true
End If
Set re = Nothing
reTest = returnVal
end function
或者,如果您对设备类型更加细化并最终拥有更多设备类型,使用字典可能会更容易管理。在那种情况下,checkUserAgent 可能看起来更像:
function checkUserAgent()
dim user_agent, d
user_agent = Request.ServerVariables("HTTP_USER_AGENT")
set d = Server.CreateObject("Scripting.Dictionary")
d.add "Phone", "(Mobile\sSafari|Linux;\sAndroid)"
d.add "PC", "(windows\sNT)"
d.add "Tablet", "(ipad)"
for each k in d.keys
if (reTest(user_agent, d.item(k))) then
checkUserAgent = k
exit for
end if
next
end function