利用 onload 事件,完成各终端页面适配

236 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

前言

在日常开发中,可能会遇见适配多种类型终端的需求。本文就记录了如何利用 onload 事件,完成各终端页面适配。

思路

利用onload 事件会在页面或图像加载完成后执行的特点,结合UserAgent判断终端类型,然后通过window.location.href 跳转到对应适配的页面。

onload 事件

onload 事件会在页面或图像加载完成后执行。

通常用在 body 元素上:

    <body onload="init()">  
    </body>

判断终端类型

要了解某个网站是在移动设备上打开的还是在pc web浏览器中打开的,我们可以通过判断Request.UserAgent中的具体信息来分析判断;

因为UserAgent包含了很多的信息,我们可以根据其中的某些信息来进行判断;

在控制台中输入navigator.userAgent查看浏览器信息:

image.png

然后根据这些信息,再结合正则表达式我们就可以判断出终端类型。

    if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {  //判断iPhone|iPad|iPod|iOS
        console.log(iPhone|iPad|iPod|iOS);  
    }
    else if (/(Android)/i.test(navigator.userAgent)) {          //判断Android
        console.log(Android); 
    }
    else {                                                      //pc
        console.log("pc");
    };

页面跳转

window.location.href 属性用于返回当前页面的 href (URL);

在js中,经常使用window.location.href跳转页面。

例如:跳转到适配pc端页面:

    window.location.href = "./pc/index.html";

示例代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<!-- onload 事件会在页面或图像加载完成后执行 -->
<body onload="init()">  
</body>
</html>
<script>
    function init() {
        if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {  //判断iPhone|iPad|iPod|iOS
            window.location.href = "./iPhone/index.html";
            // console.log(navigator.userAgent);  
        }
        else if (/(Android)/i.test(navigator.userAgent)) {          //判断Android
            window.location.href = "./Android/index.html";
            // console.log(navigator.userAgent); 
        }
        else {                                                      //pc
            window.location.href = "./pc/index.html";
            // console.log("pc");
        };
    }
</script>

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!