我写了一些JavaScript代码来检测Opera,因为我的网站使用了很多h.264格式的HTML5视频,Opera不支持。我想将Opera重定向到该网站的Flash版本,而不是刻苦地转录我的100多个视频。
这是我写的代码,它似乎不起作用。这是为什么?对不起,我是JavaScript的新手。
<script type="text/javascript">
<!--
if ((navigator.userAgent.match(/Opera/9.80/i))) {
location.replace("http://mysite.com/flash");
}
-->
</script>
P.S。 PHP或其他服务器端语言不是一种选择。
答案 0 :(得分:3)
您的正则表达式不正确。在JavaScript中,/
字符用于表示正则表达式的开头和结尾,因此如果您想使用一个作为模式的一部分,则需要将其转义:
if ((navigator.userAgent.match(/Opera\/9.80/i))) {
答案 1 :(得分:3)
不是您正在寻找的答案(就如何测试用户代理而言)而是更好的解决方案(恕我直言)。
查看Modernizr
并查看video
(针对h264
进行特定测试)。
另外,对于它的价值,有一种方法可以支持视频across devices。
编辑正如@ PaulD.Waite指出的那样,您可以使用以下代码(来自DiveIntoHTML5)测试对此的支持:
function VideoAndH264IsSupported(){
var v = document.createElement('video');
return !!(v.canPlayType && v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"').replace(/no/, ''));
}
答案 2 :(得分:1)
您需要在正则表达式中间转义/
:
/Opera\/9.80/i
答案 3 :(得分:1)
较新版本的Opera在userAgent字符串中有OPR/
而不是Opera/
var isOpera = ( !! navigator.userAgent.match(/(Opera|OPR)\//i));