当用户访问页面时,我想在 PHP 中获取屏幕和视口的高度/宽度。
我尝试了不同的方法,但它们都会导致其他问题。
我的目标:
获取第一次加载的信息(没有跳转页面,没有重新加载)。
不改网址
不影响在负载时运行的其余 PHP,或使 PHP 运行两次
到目前为止我已经尝试过:
获取视口尺寸的 Javascript:
if(!isset($_POST['width']) || !isset($_POST['height'])) {
echo '
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var height = $(window).height();
var width = $(window).width();
$.ajax({
type: \'POST\',
data: {
"height": height,
"width": width
},
success: function (data) {
$("body").html(data);
},
});
});
</script>
';
}
$user_width = $_POST['width'];
$user_height = $_POST['height'];
问题:导致所有 php 运行两次,一次加载,一次返回值(第二次大约在第一次之后 4 秒),这使得 php 的其余部分变得古怪......而且,使页面加载非常缓慢
将屏幕尺寸放入 url:
if(isset($_SESSION['screen_width']) AND isset($_SESSION['screen_height'])){
$user_width = $_SESSION['screen_width'];
$user_height = $_SESSION['screen_height'];
} else if(isset($_REQUEST['width']) AND isset($_REQUEST['height'])) {
$_SESSION['screen_width'] = $_REQUEST['width'];
$_SESSION['screen_height'] = $_REQUEST['height'];
header('Location: ' . $_SERVER['PHP_SELF']);
} else {
echo '<script type="text/javascript">window.location = "' . $_SERVER['PHP_SELF'] . '?width="+screen.width+"&height="+screen.height;</script>';
}
问题:更改 url(这会影响其他代码,并且与他们现在拥有的无表情 url 相比看起来很糟糕);不返回视口大小afaik
我是菜鸟。也许这很容易做到,但我真的不知道。我搜索了很多。这就是我得到上述方法的方式。但我无法让他们为我工作。Afaik,我还没有在任何地方看到类似情况的解决方案。
谢谢 :)