- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想在 PHP 中获取用户访问页面时屏幕和视口(viewport)的高度/宽度。
我尝试了不同的方法,但它们都会导致其他问题。
我的目标:
获取第一次加载时的信息(无跳转页面,无重新加载)。
不更改网址
不影响在加载时运行的其余 PHP,或使该 PHP运行两次
到目前为止我尝试了什么:
获取视口(viewport)尺寸的 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 相比看起来很糟糕);不返回视口(viewport)大小 afaik
我是个菜鸟。也许这很容易做到,但我真的不知道。我搜索了很多。这就是我得到上面方法的方式。但我无法让他们为我工作。 Afaik,我在任何地方都没有看到类似情况的解决方案。
谢谢:)
最佳答案
如何让您的文档准备好 AJAX 请求发送到一个单独的 PHP 文档,然后将其包含在页面加载的头部。这样,您就可以在准备好后将要加载的任何特定 HTML 直接放入正文中。
例如:
<head>
<script>
$(document).ready( function() {
var height = $(window).height();
var width = $(window).width();
$.ajax({
url: 'body.php',
type: 'post',
data: { 'width' : width, 'height' : height, 'recordSize' : 'true' },
success: function(response) {
$("body").html(response);
}
});
});
</script>
</head>
<body></body>
然后是你的 body.php
文件看起来像:
<?php
if(isset($_POST['recordSize'])) {
$height = $_POST['height'];
$width = $_POST['width'];
$_SESSION['screen_height'] = $height;
$_SESSION['screen_width'] = $width;
//Any html you want returned in here
如果您随后不希望该 JS 函数运行每个页面加载,只需将整个函数封装在一个 <?php if(isset($_SESSION['screen_height'])) { //JS function } ?>
中即可。
我不是 100% 确定您在获得尺寸后打算如何处理这些尺寸,所以如果我的回答有点含糊,我深表歉意,但通过这种方式,页面只会将保存的尺寸设置在首先访问这个浏览 session ,它不需要重定向,所以我希望它至少有点帮助:)
关于php - 首次加载时在 php 中获取用户的屏幕和视口(viewport)尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18101207/
我正在尝试获得一个按钮,按下该按钮时会改变颜色。当再次按下时,它应该变回原来的颜色。我究竟做错了什么? 我的模板中的按钮: export default { data: {
我是一名优秀的程序员,十分优秀!