laravel设备检测,区分手机端浏览器和pc端浏览器,隐藏或显示某些代码

发布于 2022-09-05 10:33:21 字数 652 浏览 26 评论 0

目前找到了这么一个类似的插件
browser-detect
可以检测不同的设备
想完成如下的要求,因为就一个页面
直接在blade模板下完成类似需求,可行么?

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  @if (某个条件)
    <link rel="stylesheet" href="桌面浏览器代码.css">
    @else
      <link rel="stylesheet" href="手机浏览器代码.css">
  @end
</head>
<body>
    @if (某个条件)
  <script src="桌面浏览器代码.js"></script>
    @else
  <script src="手机浏览器代码.js"></script>
    @endif
</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜光 2022-09-12 10:33:21

可以这么做.

只是为什么不直接做成两个模板, 把两个模板共同的部分提成公共小模板.
在大模板中 @include ('widget')

在控制器中, 判断一下浏览器, 直接返回受益人view('浏览器模板')

滥情空心 2022-09-12 10:33:21
//根据判断结果加载不同blade模板

 $isMobile = $this->isMobile();

 if ($isMobile) {
     return view('home');
 } else {
     return view('pc');
 }

//判断是否是移动端访问
   public function isMobile()
    {
        // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
            return TRUE;
        }
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA'])) {
            return stristr($_SERVER['HTTP_VIA'], "wap") ? TRUE : FALSE;// 找不到为flase,否则为TRUE
        }
        // 判断手机发送的客户端标志,兼容性有待提高
        if (isset ($_SERVER['HTTP_USER_AGENT'])) {
            $clientkeywords = array(
                'mobile',
                'nokia',
                'sony',
                'ericsson',
                'mot',
                'samsung',
                'htc',
                'sgh',
                'lg',
                'sharp',
                'sie-',
                'philips',
                'panasonic',
                'alcatel',
                'lenovo',
                'iphone',
                'ipod',
                'blackberry',
                'meizu',
                'android',
                'netfront',
                'symbian',
                'ucweb',
                'windowsce',
                'palm',
                'operamini',
                'operamobi',
                'openwave',
                'nexusone',
                'cldc',
                'midp',
                'wap'
            );
            // 从HTTP_USER_AGENT中查找手机浏览器的关键字
            if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
                return TRUE;
            }
        }
        if (isset ($_SERVER['HTTP_ACCEPT'])) { // 协议法,因为有可能不准确,放到最后判断
            // 如果只支持wml并且不支持html那一定是移动设备
            // 如果支持wml和html但是wml在html之前则是移动设备
            if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== FALSE) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === FALSE || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
                return TRUE;
            }
        }
        return FALSE;
    }
感性不性感 2022-09-12 10:33:21

建议做一个中间件,再给视图创建共享数据。
可以参考CI还是TP的那个config,里面有UA资料。

参见官方文档

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文