【问题标题】:Get height of page content获取页面内容的高度
【发布时间】:2015-08-13 23:06:54
【问题描述】:

我正在尝试获取网页正文的高度。我希望它是页面以 100% 缩放加载到高清屏幕上时的值。

这样做的目的是改变元数据中的视口,并能够强制移动浏览器一次加载整个页面,并阻止设计的响应性。

function calculateHeightOfBody() {
var body = document.body,
html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                   html.clientHeight, html.scrollHeight, html.offsetHeight );

viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', /*'width='+width+',*/ 'height='+height);

alert('height is ' + height);

我有这个功能,但无论我是在电脑上还是手机上打开页面,它都会给我 2 个不同的值。

在带有高清屏幕的计算机上我得到 944,在手机上我得到 2044。944 是正确的值。

谢谢

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    问题在于您有一部高像素密度的手机,它以更高的像素比率呈现网页。将高度除以 window.devicePixelRatio 以解决此问题。

    注意:我不认为你得到高度的方法特别理想。不要只选择 5 个值中最大的一个,而应该只使用一个值。也许window.innerHeight 可以解决问题?

    【讨论】:

    • 使用 window.devicePixelRatio 我会得到 2 个不同的值(手机上的 1024 和计算机上的 955),我会尝试知道 window.innerheight
    • 其实window.innerHeight是你屏幕可见空间的高度,所以可能不是你想要的;过失。你确定高度差是一个错误吗?由于文本换行方式不同等原因,您的身体在不同设备上的高度很可能(甚至可能)不同。
    • 与 innerHeight 相同,我得到相同的 2 个值。嗯,这就是我不希望高度不同的一点,我希望它们完全相同,然后允许用户放大或缩小页面而不调整其中所有内容的大小。我在电脑和手机上使用 Chrom,我不确定它是否真的重要。
    • 但是由于您的高度检测代码没有错误,高度可能会有所不同。您的宽桌面屏幕上的一段文本可能会换成 2 行,但在您的移动设备上却被塞进 3 行。这将不可避免地影响身体的总高度。
    • 我明白这一点,这就是我想要避免的,我希望它在台式机上和在移动设备上完全相同。
    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2012-10-18
    • 2013-09-04
    • 2016-09-11
    • 2016-11-24
    相关资源
    最近更新 更多