如何根据浏览器替换页面上的元素?

时间:2014-10-07 16:19:48

标签: javascript html css html5 html5-video

我为我玩的在线游戏联盟创建了一个网站。问题是在标题中有一个HTML5视频应该自动播放。它在Chrome和Firefox中做得很好。在Internet Explorer中它播放但没有正确显示,在Safari中它根本不显示。要解决这个问题,有什么办法可以让视频替换为这些浏览器上的标准图像?或者有没有人修复这两个浏览器?感谢。

2 个答案:

答案 0 :(得分:1)

您有几个选项,但请记住,没有一个是防弹的,您的实现将取决于您编写的代码类型(服务器端如PHP,或客户端如JS)。

以下是一些有希望让您走上正确道路的建议。

  1. 您可以使用用户代理字符串尝试检测浏览器服务器端。您可以手动解析字符串或(在我的推荐中)使用内置函数/库。有关更多信息,请参阅此主题:
  2. Code to parse user agent string?

    然后,您可以使用一组服务器端if语句将HTML输出修改为包含或不包含元素。

    1. 使用JS,您可以在呈现HTML后检测浏览器客户端。以下是一些完成这项工作的库。你可能需要一些jQuery。
    2. https://github.com/WhichBrowser/WhichBrowser

      https://github.com/gabceb/jquery-browser-plugin

      然后,您可以使用.show()/。hider()或.remove()jQuery函数等修改HTML。

答案 1 :(得分:0)

您可以使用以下JavaScript代码查找浏览器名称和版本:

navigator.sayswho= (function(){
var ua= navigator.userAgent, tem, 
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if(/trident/i.test(M[1])){
    tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
    return 'IE '+(tem[1] || '');
}
if(M[1]=== 'Chrome'){
    tem= ua.match(/\bOPR\/(\d+)/)
    if(tem!= null) return 'Opera '+tem[1];
}
M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
return M.join(' ');
})();

接下来要做的是针对值(如"IE 9")测试此字符串,并根据if子句输出代码。

另请参阅Browser detection in JavaScript?