JavaScript与客户端开发

news2025/3/25 18:54:29

1、简介

简单的讲,JavaScript是一种脚本语言,为网站提供了一种在客户端运行程序的手段,通过它可以实现客户端数据验证网页特效等功能。

JavaScript是一种基于对象和事件驱动(不懂啥意思,暂不管它),并有着较高安全性能的脚本语言。它能与HTML、Java脚本语言等技术融合到一起,然后能在一个Web页面中连接控制多个对象,实现与Web客户交互的功能。

利用JavaScript所开发的客户端应用程序,是嵌入在标准的HTML语言中的(之前学XSS注入了解过),弥补了HTML语言本身的缺陷。

2、JavaScript的特点

(1)脚本语言

JavaScript 是小程序段的编程方式,直接将代码写入HTML文档,然后浏览器下载读取时才进行编译,最后执行。

所以,查看HTML源文件就能看到其中嵌入的JavaScript源代码。

比如,我们用标签

<html>

中间是html和js代码

包括<head>  <body>  等

</html> 

这样的代码我通常是写在notepad++里面,而文件是在桌面新建的文本文档更改后缀名为.html,这个就是源文件,其中notepad++里的代码就是JavaScript源代码。

比如上次用phpstudy学习的XSS漏洞,其中用来测试是否存在XSS漏洞的代码串就是JavaScripe代码

以及用于攻击的根目录源代码

这些利用XSS漏洞的代码都与JavaScript有关。

这个是之前在机房写的html代码 ,还挺好玩的hh

从另一方面说,它属于解释性编程语言,使开发更简单和方便,而它的语法和结构与C、C++、C#、Java都十分相似,不同之处在于其运行时不会出现独立的运行窗口,运行结果是借助浏览器展示的。

比如 一般简单的情况下我们会直接使用弹层的形式来进行处理,但是有的时候是一个复杂页面,需要弹窗显示,新开页面在另一个页签显示还达不到效果,所以我们需要让浏览器打开一个新的页面,并弹出来在当前页面之上,下面来看一下代码实现

const openNewWin = function () {
  window.open(
    'https://www.oecom.cn',
    '单独窗口',
    'height=300,width=600,top=300,left=200,toolbar=no,menubar=no, scrollbars=no,resizable=no,location=no, status=no'
  )
}

上面的所有参数我并没有写全,下面来看一下参数的解释说明:
- window.open 弹出新窗口的命令;


- 'https://www.oecom.cn' 弹出窗口的文件名,相对路径绝对路径都可以;


- '_blank' 弹出新的独立窗口,非必须,可用空”代替,默认是’_self’;


- height=100 窗口高度;


- width=400 窗口宽度;


- top=0 窗口距离屏幕上方的象素值;


- left=0 窗口距离屏幕左侧的象素值;


- toolbar=no 是否显示工具栏,yes为显示;


- menubar=no 是否显示菜单栏(yes为显示);


- scrollbars=no 是否显示滚动栏(yes为显示);


- resizable=no 是否允许改变窗口大小,yes为允许;


- location=no 是否显示地址栏,yes为允许;


- status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;


- alwaysLowered 窗口隐藏在所有窗口之后,(yes为允许);


- alwaysRaised 窗口悬浮在所有窗口之上,(yes为允许);


- depended 是否和父窗口同时关闭,(yes为允许);


- titlebar 窗口题目栏是否可见,(yes为允许);


- z-look 窗口打开后是否浮在所有窗口之上,(yes为允许);

可以看到运行结果

 

效果的话就是一个单独的窗口了

在HTML文档中,JavaScript是采用<Script>...</Script>标签嵌入网页中的

注意:虽然Java和JavaScript中都含有Java,但它们差异很大,不要理解为精简版(因为刚开始我也是这么以为的)

(2)基于对象

这个我不是很理解,就感觉说的太专业了,这么说的

JavaScript是一种基于对象但不是完全面向对象的语言。

(3)简单性

这个也有点抽象,但还好,就是说JavaScript采用了Java的基本语句控制流,然后简化,结构紧凑,而且它的变量类型采用弱类型,不采用严格的数据类型,简化了编程。

Integer x;
String y;
x=3;
y="1357";

其中x是一个整数,y是一个字符串

变量声明采用弱类型的意思就是比如这里变量在使用前不必进行声明,而是解释器在运行时再检查数据类型,代码如下:

x=3;
y="1357";

前者说明x为数值型变量,而后者说明y为字符型变量,在前面可以没有专门的定义语句

(4)安全性

JavaScript不允许访问本地磁盘,也不能将数据保存在服务器上不允许对网络文档进行修改和删除,只通过浏览器实现信息浏览动态交互,这样可以有效避免一些不安全操作

(5)动态性

动态改变页面内容‌HTML页面是静态的,一旦编写,内容是无法改变的。JavaScript可以弥补这个不足,将内容动态地显示在网页中。例如,可以在用户输入特定信息后,动态显示相关的建议或信息‌。

动态改变网页的外观‌:JavaScript可以通过修改网页元素的CSS样式,动态地改变网页的外观。例如,可以改变元素的颜色、大小、位置等,从而提供更加丰富的交互体验‌。

‌验证表单数据‌:在表单验证中,JavaScript可以用于验证用户输入的数据。例如,在用户注册时,可以通过JavaScript验证用户名是否已存在、密码强度是否足够等,确保数据的准确性和安全性‌。

‌响应事件‌:JavaScript是基于事件的语言,可以响应用户的操作。例如,点击一个按钮弹出一个对话框、鼠标悬停显示提示信息等,这些功能都需要JavaScript来实现‌

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2320371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于CNN的FashionMNIST数据集识别5——GoogleNet模型

源码 import torch from torch import nn from torchsummary import summaryclass Inception(nn.Module):def __init__(self, in_channels, c1, c2, c3, c4):super().__init__()self.ReLu nn.ReLU()#路径1self.p1_1 nn.Conv2d(in_channelsin_channels, out_channelsc1, kern…

JVM垃圾回收笔记01-垃圾回收算法

文章目录 前言1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法查看根对象哪些对象可以作为 GC Root ?对象可以被回收&#xff0c;就代表一定会被回收吗&#xff1f; 1.3 引用类型1.强引用&#xff08;StrongReference&#xff09;2.软引用&#xff08;SoftReference…

【初探数据结构】树与二叉树

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对数据结构感…

蓝桥杯备考:二分答案之路标设置

最大距离&#xff0c;找最小空旷指数值&#xff0c;我们是很容易想到用二分的&#xff0c;我们再看看这个答案有没有二段性 是有这么个二段性的&#xff0c;我们只要二分就行了&#xff0c;但是二分的check函数是有点不好想的&#xff0c;我们枚举空旷值的时候&#xff0c;为了…

回调方法传参汇总

文章目录 0. 引入问题1. 父子组件传值1.1 父传子&#xff1a;props1.2 子传父&#xff1a;$emit1.3 双向绑定&#xff1a;v-model 2. 多个参数传递3. 父组件监听方法传递其他值3.1 $event3.2 箭头方法 4. 子组件传递多个参数&#xff0c;父组件传递本地参数4.1 箭头函数 … 扩…

XSS基础靶场练习

目录 1. 准备靶场 2. PASS 1. Level 1&#xff1a;无过滤 源码&#xff1a; 2. level2&#xff1a;转HTML实体 htmlspecialchars简介&#xff1a; 源码 PASS 3. level3:转HTML深入 源码&#xff1a; PASS 4. level4:过滤<> 源码&#xff1a; PASS: 5. level5:过滤on 源码…

Redis核心机制(一)

目录 Redis的特性 1.速度快 2.以键值对方式进行存储 3.丰富的功能 4.客户端语言多 5.持久化 6.主从复制 7.高可用和分布式 Redis使用场景 Redis核心机制——持久化 RDB bgsave执行流程 ​编辑 AOF AOF重写流程 3.混合持久化&#xff08;RDBAOF&#xff09; Red…

QGroupBox取消勾选时不禁用子控件

默认情况下&#xff0c;QGroupBox取消勾选会自动禁用子控件&#xff0c;如下图所示 那么如何实现取消勾选时不禁用子控件呢&#xff1f; 实现很简单&#xff0c;直接上代码了 connect(ui->groupBox, &QGroupBox::toggled, this, [](bool checked){if (checked false){…

MyBatis-Plus 自动填充:优雅实现创建/更新时间自动更新!

目录 一、什么是 MyBatis-Plus 自动填充&#xff1f; &#x1f914;二、自动填充的原理 ⚙️三、实际例子&#xff1a;创建时间和更新时间字段自动填充 ⏰四、注意事项 ⚠️五、总结 &#x1f389; &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢…

canvas数据标注功能简单实现:矩形、圆形

背景说明 基于UI同学的设计&#xff0c;在市面上找不到刚刚好的数据标注工具&#xff0c;遂决定自行开发。目前需求是实现图片的矩形、圆形标注&#xff0c;并获取标注的坐标信息&#xff0c;使用canvas可以比较方便的实现该功能。 主要功能 选中图形&#xff0c;进行拖动 使…

【UI设计】一些好用的免费图标素材网站

阿里巴巴矢量图标库https://www.iconfont.cn/国内最大的矢量图标库之一&#xff0c;拥有 800 万 图标资源。特色功能包括团队协作、多端适配、定制化编辑等&#xff0c;适合企业级项目、电商设计、中文产品开发等场景。IconParkhttps://iconpark.oceanengine.com/home字节跳动…

ubuntu 解挂载时提示 “umount: /home/xx/Applications/yy: target is busy.”

问题如题所示&#xff0c;我挂载一个squanfs文件系统到指定目录&#xff0c;当我使用完后&#xff0c;准备解挂载时&#xff0c;提示umount: /home/xx/Applications/yy: target is busy.&#xff0c;具体的如图所示&#xff0c; 这种提示通常是表明这个路径的内容正在被某些进…

一条不太简单的TEX学习之路

目录 rule raisebox \includegraphics newenviro 、\vspace \stretch \setlength 解释&#xff1a; 总结&#xff1a; 、\linespread newcommand \par 小四 \small simple 、mutiput画网格 解释&#xff1a; 图案解释&#xff1a; xetex pdelatex etc index 报…

Matplotlib完全指南:数据可视化从入门到实战

目录 引言 一、环境配置与基础概念 1.1 安装Matplotlib 1.2 导入惯例 1.3 两种绘图模式 二、基础图形绘制 2.1 折线图&#xff08;Line Plot&#xff09; 2.2 柱状图&#xff08;Bar Chart&#xff09; 三、高级图表类型 3.1 散点图&#xff08;Scatter Plot&#xff…

在大数据开发中ETL是指什么?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字经济时代&#xff0c;数据已成为企业最核心的资产。然而&#xff0c;分散在业务系统、日志文件…

OAuth 2.0认证

文章目录 1. 引言1.1 系列文章说明1.2 OAuth 2.0 的起源与演变1.3 应用场景概览 2. OAuth 2.0 核心概念2.1 角色划分2.2 核心术语解析 3. 四种授权模式详解3.1 授权码模式&#xff08;Authorization Code Grant&#xff09;3.1.1 完整流程解析3.1.2 PKCE 扩展&#xff08;防止授…

Kubernetes的Replica Set和ReplicaController有什么区别

ReplicaSet 和 ReplicationController 是 Kubernetes 中用于管理应用程序副本的两种资源&#xff0c;它们有类似的功能&#xff0c;但 ReplicaSet 是 ReplicationController 的增强版本。 以下是它们的主要区别&#xff1a; 1. 功能的演进 ReplicationController 是 Kubernete…

[Lc_2 二叉树dfs] 布尔二叉树的值 | 根节点到叶节点数字之和 | 二叉树剪枝

目录 1.计算布尔二叉树的值 题解 2.求根节点到叶节点数字之和 3. 二叉树剪枝 题解 1.计算布尔二叉树的值 链接&#xff1a;2331. 计算布尔二叉树的值 给你一棵 完整二叉树 的根&#xff0c;这棵树有以下特征&#xff1a; 叶子节点 要么值为 0 要么值为 1 &#xff0c;其…

蓝桥杯 之 第27场月赛总结

文章目录 习题1.抓猪拿国一2.蓝桥字符3.蓝桥大使4.拳头对决 习题 比赛地址 1.抓猪拿国一 十分简单的签到题 print(sum(list(range(17))))2.蓝桥字符 常见的字符匹配的问题&#xff0c;是一个二维dp的问题&#xff0c;转化为对应的动态规划求解 力扣的相似题目 可以关注灵神…

可视化动态表单动态表单界的天花板--Formily(阿里开源)

文章目录 1、Formily表单介绍2、安装依赖2.1、安装内核库2.2、 安装 UI 桥接库2.3、Formily 支持多种 UI 组件生态&#xff1a; 3、表单设计器3.1、核心理念3.2、安装3.3、示例源码 4、场景案例-登录注册4.1、Markup Schema 案例4.2、JSON Schema 案例4.3、纯 JSX 案例 1、Form…