我不知道这是否可能,但我希望得到任何帮助。
- 如何在拉拉维尔中获取客户端的 DOM 宽度?
- 基本上,有没有办法从
$request
中提取客户端的屏幕宽度? - 或者Laravel或Blade中是否有任何功能可以给我一个屏幕宽度值?
我知道我可以用jQuery $(document).width()
获取DOM宽度,但是我需要服务器端的宽度值;在执行任何js之前。
@ArturGrigio 您可以尝试设置 JavaScript cookie 并在 Laravel
中访问它。当用户访问您的网站时,使用 JS(window.width
)获取屏幕尺寸并将其存储在 cookie screen=WxH
在拉拉维尔$screen = Cookie::get('screen');
$screen = explode("x", $screen);
$width = $screen[0]
$height = $screen[0];
这是1个解决方案。
不幸的是,无法从PHP获取屏幕尺寸信息。您可以尝试使用用户代理并检测它是移动设备还是台式机或平板电脑。并为这 3 种类型制作固定大小。
拉拉维尔的一个很好的用户代理包
在过去的一个小时里,我一直在互联网上搜索,我没有找到比黑客和技巧更好的东西。我什至没有找到一个好的 Node.js跨操作系统、跨浏览器包来解决这个问题......
但是对于任何有类似问题的人,这是我的解决方法(尽管我仍然认为可能有更好的方法来实现预期的结果,例如@Froxz)。
可能的解决方案:我使用了一个名为LazyLoadXT的很棒的延迟加载库 Ress.io。
这是一个标准的 img html 标签:
<img src="https://i.stack.imgur.com/5coxi.jpg" width="300px">
这是LazyLoadXT:
<head>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://ressio.github.io/lazy-load-xt/dist/jquery.lazyloadxt.js"></script>
</head>
<img data-src="https://i.stack.imgur.com/5coxi.jpg" width="300px" src="">
这是LazyLoadXT + JavaScript:
<head>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://ressio.github.io/lazy-load-xt/dist/jquery.lazyloadxt.js"></script>
</head>
<script>document.write('<img data-src="https://i.stack.imgur.com/5coxi.jpg" width="' + document.documentElement.clientWidth + 'px" src="">')</script>
这仍然是ajax(我试图避免),但它是我能想到的最干净的解决方案。
演示:js小提琴