window.innerHeight undefined

本文介绍了在不同浏览器版本中获取屏幕高度的兼容性解决方案。针对IE8及以上版本推荐使用window.innerHeight,对于IE8以下版本则建议采用document.body.clientHeight。为确保所有版本的IE都能正确获取到屏幕的高度信息,可以通过条件判断进行兼容处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ie8以上版本获取屏幕高度用window.innerHeight
ie8以下版本用document.body.clientHeight
兼容ie版本可以使用 var height=window.innerHeight||document.body.clientHeight;
import React, { useEffect, useRef } from 'react'; import * as THREE from 'three'; // @ts-ignore import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; const VRRoom: React.FC = () => { const mountRef = useRef<HTMLDivElement>(null); useEffect(() => { // 场景 const scene = new THREE.Scene(); // 相机 const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.3, 1000 ); camera.position.set(0, 0, 0.1); // 渲染器 const renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); // 控制器 const controls = new OrbitControls(camera, renderer.domElement); controls.enableZoom = false; controls.enablePan = false; controls.rotateSpeed = 0.5; // 球体几何体 const geometry = new THREE.SphereGeometry(500, 60, 40); geometry.scale(-1, 1, 1); // 反转球体,使贴图在内壁 // 贴图 const texture = new THREE.TextureLoader().load('/vr.jpg'); const material = new THREE.MeshBasicMaterial({ map: texture }); const mesh = new THREE.Mesh(geometry, material); scene.add(mesh); // 渲染函数 const animate = () => { requestAnimationFrame(animate); controls.update(); renderer.render(scene, camera); }; // 挂载 if (mountRef.current) { mountRef.current.appendChild(renderer.domElement); } animate(); // 响应式 const handleResize = () => { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }; window.addEventListener('resize', handleResize); // 清理 return () => { window.removeEventListener('resize', handleResize); if (mountRef.current) { mountRef.current.removeChild(renderer.domElement); } renderer.dispose(); geometry.dispose(); material.dispose(); texture.dispose(); }; }, []); return <div ref={mountRef} style={{ width: '100vw', height: '100vh', overflow: 'hidden' }} />; }; export default VRRoom;帮我找一下为什么效果是全黑
最新发布
06-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值