浏览器的相关知识

2023-05-16

今天在网上找到了一些需要大致了解的有关浏览器的相关知识分享,原文链接在下方

1.浏览器的主要组成部分是什么?

  • 用户界面 - 包括地址栏、前进/后退按钮、书签菜单等。除了浏览器主窗口显示的您请求的页面外,其他显示的各个部分都属于用户界面。
  • 浏览器引擎 - 在用户界面和呈现引擎之间传送指令。
  • 呈现引擎 - 负责显示请求的内容。如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上。
  • 网络 - 用于网络调用,比如 HTTP 请求。其接口与平台无关,并为所有平台提供底层实现。
  • 用户界面后端 - 用于绘制基本的窗口小部件,比如组合框和窗口。其公开了与平台无关的通用接口,而在底层使用操作系统的用户界面方法。
  • JavaScript 解释器。用于解析和执行 JavaScript 代码。
  • 数据存储。这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie。新的 HTML 规范 (HTML5) 定义了“网络数据库”,这是一个完整(但是轻便)的浏览器内数据库。

2.浏览器是如何渲染UI的?

  • 浏览器获取HTML文件,然后对文件进行解析,形成DOM Tree
  • 与此同时,进行CSS解析,生成Style Rules
  • 接着将DOM Tree与Style Rules合成为 Render Tree
  • 接着进入布局(Layout)阶段,也就是为每个节点分配一个应出现在屏幕上的确切坐标
  • 随后调用GPU进行绘制(Paint),遍历Render Tree的节点,并将元素呈现出来

3.DOM Tree是如何构建的?

  • 转码: 浏览器将接收到的二进制数据按照指定编码格式转化为HTML字符串
  • 生成Tokens: 之后开始parser,浏览器会将HTML字符串解析成Tokens
  • 构建Nodes: 对Node添加特定的属性,通过指针确定 Node 的父、子、兄弟关系和所属 treeScope
  • 生成DOM Tree: 通过node包含的指针确定的关系构建出DOM Tree

4.浏览器重绘与重排的区别?

  • 重排: 部分渲染树(或者整个渲染树)需要重新分析并且节点尺寸需要重新计算,表现为重新生成布局,重新排列元素
  • 重绘: 由于节点的几何属性发生改变或者由于样式发生改变,例如改变元素背景色时,屏幕上的部分内容需要更新,表现为某些元素的外观被改变

5.如何触发重排和重绘?

  • 添加、删除、更新DOM节点
  • 通过display: none隐藏一个DOM节点-触发重排和重绘
  • 通过visibility: hidden隐藏一个DOM节点-只触发重绘,因为没有几何变化
  • 移动或者给页面中的DOM节点添加动画
  • 添加一个样式表,调整样式属性
  • 用户行为,例如调整窗口大小,改变字号,或者滚动。

6.什么是浏览器同源策略?

同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

7.如何实现跨域?

1.jsonp本质上是一个Hack,它利用<script>标签不受同源策略限制的特性进行跨域操作。

jsonp优点:

  • 实现简单
  • 兼容性非常好

jsonp的缺点:

  • 只支持get请求(因为<script>标签只能get)
  • 有安全性问题,容易遭受xss攻击
  • 需要服务端配合jsonp进行一定程度的改造

2.cors是目前主流的跨域解决方案,跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浏览器的相关知识 的相关文章

  • ros安装的依赖问题

    问题描述 xff1a ros kinetic desktop full 依赖 ros kinetic desktop 但是它将不会被安装 依赖 ros kinetic perception 但是它将不会被安装 依赖 ros kinetic
  • STM32MP157驱动开发——字符设备驱动

    一 简介 字符设备是 Linux 驱动中最基本的一类设备驱动 xff0c 字符设备就是一个一个字节 xff0c 按照字节 流进行读写操作的设备 xff0c 读写数据是分先后顺序的 比如我们最常见的点灯 按键 IIC SPI xff0c LC
  • Java样卷

    一 问答题 请解释一下Java语言的主要特点 至少说明五个特点 进程和线程的概念是什么 xff1f 两者有什么区别和联系 什么是流 xff1f 什么是字节流 xff1f 什么是字符流 xff1f 字节流和字符流的差别是什么 xff1f 二
  • CodeBlocks如何将英文环境改为中文

    一 下载汉化包 xff08 链接如下 xff09 链接 xff1a https pan baidu com s 1U FMZuFvFQ9 70whXcIwQ 提取码 xff1a 2333 二 选择路径 将汉化包中的文件 xff08 Code
  • 浅谈多任务学习

    目录 一 前言及定义 二 多任务学习 xff08 MTL xff09 的两种方法 2 1 参数的硬共享机制 xff08 hard parameter sharing xff09 2 2 参数的软共享机制 xff08 soft paramet
  • PyTorch在GPU上跑代码需要迁移哪些东西?

    一 数据 模型 损失函数需要迁移到GPU上 使用GPU训练时 xff0c 数据 函数和模型都必须同时放在GPU上 xff0c 否则会出错 xff08 1 xff09 判断GPU是否可用 if torch cuda is available
  • C++ Primer 第五版学习 第一、二章

    一 标准输入输出 cin是标准输入 xff08 istream对象 xff09 cout是标准输出 xff08 ostream xff09 cerr是标准错误 xff0c 用来输出警告和错误消息 clog用来输出程序运行时的一般性信息 二
  • C++ Primer第五版学习 第四章第五章

    补第三章 size t size t是一些C C 43 43 标准在stddef h cstddef中定义的 这个类型足以用来表示对象的大小 size t的真实类型与操作系统有关 在32位架构中被普遍定义为 xff1a typedef un
  • C++笔试题

    1 用预处理指令 define声明一个常数 xff0c 用以表明1年中有多少秒 xff1f define SECONDS PER YEAR 60 60 24 365 UL 2 写一个标准宏MIN xff0c 这个宏输入两个参数并返回较小的一
  • C++ Primer第五版学习 第十章

    泛型算法为什么叫泛型 可以运用在多种容器类型之上 xff0c 而容器内的元素类型也可以多样化 标准库算法对迭代器而不是容器进行操作 因此 xff0c 算法不能直接添加或删除元素 find iter1 iter2 value 搜索算法 前两个
  • kindle操作:传输下载的书籍、更改书籍封面

    kindle 可以使用 calibre 软件进行电子书的管理 xff0c 官网下载地址为 xff1a https calibre ebook com download calibre 是一款电子书管理的开源软件 xff0c 支持Window
  • C++ Primer第五版学习 第十一章

    一 关联容器类型 按关键字有序保存元素 map关联数组 xff0c 保存关键字 值对set关键字即值 xff0c 即只保存关键字的容器multimap关键字可重复出现的mapmultiset关键字可重复出现的set 无序集合 unorder
  • C++ Primer第五版学习 第十二章

    一 三种内存 静态内存 xff1a 保存局部static对象 类static数据成员以及定义在任何函数之外的变量 栈内存 xff1a 保存定义在函数内的非static对象 分配在静态内存和栈内存中的对象由编译器自动创建和销毁 对于栈对象 x
  • EC20、RM500Q在TX2上或其他设备上模块识别不到

    首先本人使用的是minipcie接口 xff0c RM500Q也是转成minipcie接口接入设备的 xff0c 然后运行命令lsusb xff0c 看不到这些模块 曾尝试在两个设备上移植过EC20和RM500都遇到同样的问题 xff0c
  • 【NVIDIA】显卡报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

    输入nvidia smi报错如下 xff1a NVIDIA SMI has failed because it couldn 39 t communicate with the NVIDIA driver Make sure that th
  • 笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

    编程斗图 xff01 随手拈来 xff01 文章底部获取完整代码 xff01 效果预览 为了实现这个效果 xff0c 需要准备两张相近的图片 在 Cocos Creator 编辑器中 xff0c 新建一个材质 Material xff0c
  • Windows安装TensorFlow教程(国内源安装附上各大镜像网站网址)

    安装TensorFlow TensorFlow由Google公司打包成一个 pip 安装包 xff0c 可以用正常安装包的方式安装 TensorFlow xff0c 即进入命令行执行下面这一条简单的语句 正常安装 xff1a pip ins
  • Openstack-Rocky 一键安装(多节点搭建)~步骤超详细

    本次openstack多节点自动化安装 xff0c 采用4台虚拟机节点为演示环境 xff0c 首先演示如何自动化快速搭建一套openstack云平台 实验环境 xff1a 1 控制节点 CPU xff1a 双核双线程 CPU虚拟化开启 内存
  • python 更新pip报错 解决方法大全

    python 更新pip报错 解决方法大全 在使用Python的pip安装第三方库时会提示当前pip版本低 xff0c 要求更新 xff0c 但更新时会报错 xff0c 请依次尝试以下几种方法 xff1a 在使用Python的pip安装第三

随机推荐

  • 获取百度主页和系统调用

    获取百度主页 span class token function exec span 8 span class token operator lt span span class token operator gt span dev tcp
  • 文本编辑工具vim-及特殊用法,alias别名

    文章目录 简介打开文件 一 vim三种模式模式转换关闭文件特殊用法 xff1a 二 命令模式1 命令模式查找2 命令模式光标跳转3 命令模式翻屏操作4 字符编辑 xff1a 5 替换命令 r replace 6 删除命令 xff1a 7 复
  • 企业竞争分析的几种方法:SWOT、波特五力、PEST

    最近实验室要申报一个互联网 43 的项目 xff0c 项目中有关企业经营部分的内容着实令我们这些工科生无从下手 xff0c 在咨询了某专业相关的学妹后稍微有了点头绪 此处手动感谢学妹的协助哈哈哈 xff0c 本着学科交叉 xff0c 多学无
  • 解决E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件。

    今天 xff0c 在更新软件时 xff0c 使用以下命令时 sudo apt get update sudo apt get upgrade 抛出错误 E 仓库 http ppa launchpad net fcitx team night
  • (仿牛客社区项目)Java开发笔记3.5:添加评论

    文章目录 添加评论1 dao层2 service层3 controller层4 view层5 功能测试 添加评论 根据上节的开发安排 xff1a 显示评论功能完成后 xff0c 开始实现添加评论功能 1 dao层 CommentMapper
  • js_事件

    一 常用的事件 onload 加载完成事件 页面加载完成之后 常用于做页面js代码初始化操作 onclick 单击事件 常用于按钮的点击相应操作 onblur 失去焦点事件 常用于输入框失去焦点后验证其输入内容是否合法 onchange 内
  • 操作系统学习

    目录 2 1 操作系统的启动 3 1 内存分层结构 3 2 地址空间与地址生成 3 3 内存分配 3 4 压缩式与交换式碎片整理 4 1 非连续内存 分段 4 2 非连续内存 分页 4 3 页表概述 4 4 多级页表 4 5 反向页表 5
  • 更改 tr 背景颜色无效问题

    更改tr背景颜色无效问题 x1f4c3 在更改tr背景颜色时 xff0c 我们肯定是想要整行颜色改变 xff0c 但有时会出现只有部分改变 或 全都不改变的情况 这时我们就需要去看一下自己是否在之前设计的 CSS 样式中已经给定了tr中的t
  • 【以例为引】gtsam简单入门(上)--理论和认识

    如有错漏 xff0c 请评论或者私信指出 xff0c 感谢 xff01 xff01 GTSAM简介 GTSAM xff08 Georgia Tech Smoothing and Mapping xff09 是基于因子图的C 43 43 库
  • 基于51单片机的门禁卡设计

    1 设计思路 RFID门禁系统主要采用了STC89C52RC单片机作为控制模块及读卡器RFID RC522作为识别模块 本设计实现了自动 准确的识别卡序列号 当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号 xff0c 并根据得到的
  • STM8S程序烧录失败?调试?ST-Link方式新手向教程IAR

    首先我们要接线 xff0c 以上为某块STM8S的原理图 xff0c 我们要SWIM接SWIM xff0c NSET接RESET xff0c GND接GND xff0c 3 3接3 3 接线完成后就是软件部分了 软件部分首先要下载ST li
  • 机器学习算法——K-近邻算法(代码实现手写数字识别)

    0 引言 xff0c K 近邻算法是一种非常有效的分类算法 xff0c 它非常有效且易于掌握 原理 xff1a K 近邻算法通过计算不同样本之间的距离来分类物品 使用前 xff0c 我们需要有一个训练样本集 xff0c 并且样本集中每个数据
  • 为Navigation 2创建自定义behavior tree plugin

    系列文章目录 思岚激光雷达rplidar从ROS 1到ROS 2的移植 ROS 2下navigation 2 stack的构建 订阅rviz2的导航目标位置消息 goal pose 打断behavior tree的异步动作节点 xff0c
  • ubuntu20:/usr/bin/env: ‘python’: No such file or directory

    参考 xff1a https stackoverflow com questions 3655306 ubuntu usr bin env python no such file or directory 第一种可能 xff1a 如果没装p
  • 四轴无人飞行器 之 上位机

  • c/c++编程学习:空指针是什么?

    什么是空指针 xff1f 对于每一种指针类型 xff0c 都有一个特殊的值 空指针 xff0c 空指针与其他所有指针值区分开来 xff0c 保证其不会指向任何函数或者对象等有意义的数据 因此 xff0c 取地址运算符 amp 永远不会产生空
  • 基于ESP32的智能车WiFi图传模块实现

    基于 ESP32 C3 的多协议 WiFi 透传模块 xff08 可用作智能车图传 xff09 本项目为基于乐鑫公司的 ESP32 C3 芯片制作的无线透传模块 xff0c 具有多个通信协议接口 xff1a UART SPI 设计初衷是为了
  • 云服务器下载的镜像文件raw格式转vmdk

    使用软件qemu img https qemu weilnetz de w64 2021 下载之后安装 xff0c 然后进入安装的文件夹 xff0c 打开命令行工具然后执行下面命令 qemu img exe convert p f raw
  • keil5使用Arm Compiler 6编译出错

    Using Compiler 39 V6 15 39 folder 39 D Keil v5 ARM ARMCLANG Bin 39 main c 16 warning In file included from USER stm32f4x
  • 浏览器的相关知识

    今天在网上找到了一些需要大致了解的有关浏览器的相关知识分享 xff0c 原文链接在下方 1 浏览器的主要组成部分是什么 xff1f 用户界面 包括地址栏 前进 后退按钮 书签菜单等 除了浏览器主窗口显示的您请求的页面外 xff0c 其他显示