Javascript学习笔记11 HTML5脚本编程

1.2 开始第一幅“码绘”——Javascript、p5.js及HTML5简介 再正式学习前,有必要对我们要用到的几个玩意进行理解和辨析,它们是 Javascript(简称JS), HTML5(简称H5), P5.js (简称P5) 这里主要是以类比作画来辨析它们之间的联系和区别: HTML5是用于浏览器中显示信息的超文本语言,相当于显示绘画作品的画框; P5.js是一个JS的库和框架,相当于作画用的画布、颜料和工具; Javascript是一种用于在浏览器中执行程序的脚本语言,相当于绘画的操作技法。 阅读详情

跨文档消息传递

跨文档消息传递(XDM)是指在来自不同域的页面之间传递消息。例如由当前页面向当前页面的<iframe>元素,或者当前页面弹出的窗口发送消息
核心方法是postMessage(),接受两个参数,一条字符串消息,以及表示接受方来自于哪个域的字符串,如果对方窗口不是这个域名,信息不会发送出去。此方法的调用对象不是当前页面的窗口对象,而是目标框架的窗口对象

var iframeWindow = document.getElementById("myframe").contentWindow;  //取得目标窗口对象
iframeWindow.postMessage("hello","http://www.123.com");   //发送消息

在接受窗口可以添加message事件用于监听,event对象具有三个属性,data(接受的字符串),origin(来源窗口所在的域),source(来源窗口window对象的代理)

window.addEventListener('message', receiveMessage, false);

function receiveMessage(event){
    if (event.origin == 'http://example.org') {
        //do something
        event.source.postMessage("recived",event.origin);  //向来源窗口发送回执
    }
}

原生拖放

拖放事件

拖动某元素时,将依次在被拖动元素上触发以下事件:

  • dragstart:按下鼠标并开始拖放
  • drag:鼠标移动过程中,持续触发
  • dragend:拖动停止,无论是把元素放在有效还是无效目标上都会触发

当某元素被拖动到一个有效目标时,依次会在放置目标上触发以下事件:

  • dragenter:有元素被拖动到放置目标上
  • dragover:被拖动元素在放置目标上移动,持续触发
  • dragleave或drop:若元素被拖出了放置目标上,则触发前者,若被放到了放置目标上,则触发drop事件

自定义放置目标

重写dragenter和dragover事件,使某些无效的放置目标变为有效的放置目标

var droptarget = document.getElementById("droptarget");

droptarget.addEventListener("dragenter",function(event){
    event.preventDefault();
},false);

droptarget.addEventListener("dragover",function(event){
    event.preventDefault();
},false);

阻止Firefox的默认拖动行为(打开URL)

droptarget.addEventListener("drop",function(event){
    event.preventDefault();
},false);

dataTransfer对象

dataTransfer对象是事件对象的一个属性,用于从被拖放元素向放置目标传递字符串格式的数据,其具有两个方法:

  • getData():读取数据,接受一个参数,即读取数据的类型(Text、url、text/uri-list),只能在drop事件处理程序中读取
  • setData():设置和接受数据,接受两个参数,保存的数据类型以及一个字符串,在拖动文本时,浏览器会自动地调用该方法,将文本以”text”格式保存。当拖动链接或图像时,将保存URL。当然你可以自己调用该方法
var dataTransfer = event.dataTransfer;
// 读取url
var url = dataTransfer.getData("url") || dataTransfer.getData("text/uri-list");
// 读取文本
var text = dataTransfer.getData("Text");

dropEffect和effectAllowed

dropEffect和effectAllowed是dataTransfer对象的两个属性,用来确定放置目标的元素能够接受什么操作以及被拖动的元素能够执行哪种放置行为
dropEffect具有下列4个可能的值:

  • “none”:不能把拖动元素放在这里,这是除文本框外所有元素的默认值
  • “move”:应该把拖动元素移动到放置目标
  • “copy”:应该把拖动元素复制到放置目标
  • “link”:表示放置目标会打开拖动的元素

要使用dropEffect属性,必须在ondragenter事件处理程序中,针对放置目标来设置

dropEffect属性要搭配effectAllowed属性才有用,effectAllowed属性具有下列可能值:

  • “uninitialized”:没有给拖动元素设置任何放置行为
  • “none”:被拖动的元素不能有任何行为
  • “copy”:只允许复制
  • “link”:只允许打开链接
  • “move”:只允许移动
  • “copyLink”:可以复制和打开链接
  • “copyMove”:可以复制和移动
  • “linkMove”:可以打开链接和移动
  • “all”:任意的dropEffect

必须在ondragstart事件处理程序中设置effectAllowed属性,针对被拖动的元素

根据两者的概念,我们也就可以理解两者的使用规则:

(1)如果effectAllowed属性是定为none,则不允许拖放该元素。
(2)如果dropEffect 属性设定为none,则不允许拖放元素到该目标元素中。
(3)如果effectAllowed属性设定为all 或不设定,则dropEffect属性允许被设定为任何值。并且按指定的效果显示。
(4)如果effectAllowed属性设定为具体的效果(不为none、all),dropEffect属性也设定了具体视觉效果,则两个具体效果之必须完全相等,否则不允许将被拖放元素拖放到目标元素中

可拖动

设置元素的draggable属性,表示元素是否可拖动。图像和链接自动被设置为true,而其他元素都是false

<div draggable="true">可拖动</div>

媒体元素

<audio>和<video>元素提供了用于实现日常功能的JavaScriptAPI,使用时,必须包含src属性,指向加载的媒体文件

<audio src="1.mp3">audio</audio>
<video src="1.mpg">video</video>
  • 为poster属性指定图像的URL可以在加载视频期间显示一副图像
  • 如果标签中有controls属性,则意味着浏览器应该显示UI控件

可以使用<source>元素指定多个不同的媒体源,尽可能地兼容不同的浏览器

<video>
    <source src="1.webm" type="video/webm">
    <source src="1.ogv" type="video/ogg">
    <source src="1.mpg">
</video>

<audio>和<video>元素具有很多属性和事件,使用play()和pause()方法可以手工控制媒体文件的播放。使用canPlayType()方法可以检测浏览器是否支持某种格式和编解码器,该方法接受一个参数,格式/编解码器字符串,例如”audio/mpeg”,返回”probably”、”maybe”或空字符串

<audio>元素还有个构造函数Audio,其与Image很相似,但Audio不用像Image那样必须插入文档,只需创建一个新实例,传入媒体文件,在下载完成后调用play()方法,即可播放

var audio = new Audio("sound.mp3");
audio.addEventListener("canplaythrough",function(){
    audio.play();
},false);

历史状态管理

历史状态管理能够在不加载新页面的情况下,改变浏览器的URL,解决AJAX使用浏览器前进和后退问题
history.pushState()方法,接受三个参数:状态对象、新状态的标题和可选的相对URL

history.pushState({name:"zjw"},"1","zjw.html");

该方法将新的状态信息加入历史状态栈,而浏览器的地址栏也会变成新的相对URL,此时”后退”按钮可以使用了,按下”后退”按钮,会触发window对象的popstate事件,此时popstate事件的事件对象有一个state属性,该属性就包含着之前传入的状态对象

window.addEventListener("popstate",function(event){
    var state = event.state;
    if (state){    //第一个页面加载时state为空
        //do something
    }
},false);

而重写(替换)当前状态,则是调用replaceState()方法,传入的参数与pushState()方法前两个参数相同,其不会在历史状态栈中创建新状态

history.replaceState({name:"wjz"},"2");

具体实例可以看看https://blog.youkuaiyun.com/q1056843325/article/details/60607402

57、HTML5脚本编程与JavaScript错误处理调试 本文介绍了HTML5脚本编程中的历史状态管理和JavaScript的错误处理与调试方法。涵盖了HTML5提供的JavaScript API、浏览器对错误的报告机制、使用try-catch进行异常处理、错误类型判断、调试工具的使用技巧以及错误处理的最佳实践。通过这些内容,开发者可以更好地提升Web应用程序的稳定性和用户体验。 阅读详情

相关推荐

HTML5和JavaScript打造的3D立体相册完整教程

在现代网页开发中,HTML5和JavaScript共同定义了Web应用的前沿。它们的组合,使得开发者能够在浏览器中创建功能丰富、用户体验卓越的网页。HTML5在强化标记语言的同时,引入了诸多新特性,例如语义化标签、多媒体支持和本地存储等。而JavaScript则以其灵活性和强大的编程能力,为网页提供了动态交互的能力。Three.js是一个轻量级且跨浏览器的3D库,它提供了许多与WebGL相关的抽象层,使得开发者可以使用JavaScript构建和显示3D图形。

weixin_29025501的博客 916

wndow.popstate,微信浏览器返回事件, vue mixins

微信浏览器返回键按下跳转路由 window popstate, Vue全中 写入 mixins文件 引入 main.js 全局引入 import popstate from './components/newComponent/popstate' Vue.mixin(popstate) 使用 使用时 this.init(‘router’) 此处router为 留有name属性值 ro...

南思琼海 2404

Blender骨骼绑定实战:如何用IK控制器让角色动作更自然(附常见问题解决)

本文深入探讨了Blender中IK控制器的实战应用,旨在解决角色动作僵硬问题。通过对比IK与FK的核心差异,详细解析了IK链的构建、参数设置及极向目标的使用,并提供了控制器定制、IK/FK无缝切换等高级技巧,帮助动画师实现更自然、符合直觉的角色动画。

weixin_29243279的博客 438

监听浏览器返回按钮(popstate)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34380948的博客 6610

Abaqus滞回问题求解—浆锚连接装配式剪力墙滞回模拟

当下土木工程研究生,多数都在从事装配式混凝土构件安全或装配式混凝土构件连接节点力学性能的研究。研究这类问题,几乎脱离不开对有限元软件的使用,Abaqus求解能力非常强大,但模型处理能力相对较弱。装配式混凝土结构的有限元计算与传统现浇结构相比,其节点处理起来相对复杂,计算结果往往需要凸显出连接节点力学特性,所以对建模精程度的要求较高。所以向大家介绍一款工具—HyperMesh软件(一下简称Hm),它是专业的有限元前处理工具,用于处理装配式混凝土构件或连接节点有限元模型比较合适。这篇文章主要介绍如何利用Hm处理

qq_31918049的博客 2902

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 396

JavaScript笔记之JS 和 HTML5 的关系

一个完整的程序很少只用 HTML5——除非是纯静态页面(如一个简单的博客文章)。但如果你想添加任何动态功能(如按钮点击后更新内容、表单验证、动画),就必须用 JS。:在现代前端开发中,HTML5 和 JS 几乎总是结合使用的,尤其是如果你在构建一个“程序”(如 web app、游戏或交互页面)。这里,JS 监听按钮点击并弹出警报。这只是显示文本,没交互。

小勇博客 1028

YOLOv8-Pose NCNN Android部署优化实践

本文探讨了在Android设备上高效部署YOLOv8-Pose姿态检测模型的优化实践。通过修改Pose头部导出逻辑,分离后处理到C++端实现,并替换SiLU激活函数为ReLU,显著提升了计算效率。具体步骤包括模型结构优化、ONNX导出、NCNN转换与算子融合,最终在Android端实现了30FPS的稳定推理性能。项目提供了完整的优化思路和实现方案,对移动端AI应用开发具有参考价值。

FJN110的博客 323

【前端】【HTML5+CSS3+JS】学习笔记总结

【HTML5+CSS3+JS】学习笔记总结

qq_73471456的博客 1612

VLA仿真平台:Isaac sim、MuJoCo

在虚拟仿真领域,VLA(Virtual Learning Agent)仿真器是用于开发和训练虚拟机器人代理的环境,它们为机器人提供了一个平台来进行各种任务的模拟和学习,特别是在强化学习(RL)中。两款广泛应用的仿真器是和。这两者各有其特点和优势,适用于不同类型的机器人研究和开发。

u013250861的博客 861

基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 云平台: 采用中国移动OneNet. 也可以采用腾讯、阿里云、华为云、百度天工物接入、机智云等等。 前面文章有讲解。 协议: 采用MQTT协议 开发软件:keil5 完整项目源码下载:https://download.youkuaiyun.com/download/xiaolong1126626497/19766925 二、包含的硬件与实...

1万+

Javascript学习笔记(八)——HTML5脚本编程

HTML5脚本编程 跨文档消息传递 简称XDM。核心是postMessage()方法,接收两个参数:一条消息和一个表示消息接收方来自哪个域的字符串 let iframeWindow = document.getElementById("myframe").contentWindow; iframeWindow.postMessage("A secret", "http://www.wrox.com"); 收到XDM消息时,会触发window对象的message事件,传递给onmessage处理程序的事件对

Snowzhao的博客 444

数据分析案例-2024 年全电动汽车数据集可视化分析

本数据集来源于Kaggle,原始数据集共有177866条数据,17个变量。该数据集显示了目前通过华盛顿州许可部 (DOL) 注册的电池电动汽车 (BEV) 和插电式混合动力电动汽车 (PHEV)。电池电动汽车 (BEV) 是一种全电动汽车,使用一个或多个电池来存储电能,为电机提供动力,并通过将车辆插入电源进行充电。插电式混合动力汽车 (PHEV) 是一种使用一个或多个电池为电动机提供动力的车辆;使用另一种燃料,例如汽油或柴油,为内燃机或其他推进源提供动力;并通过将车辆插入电源来充电。

m0_64336780的博客 1万+

编程笔记 html5&css&js 021 JavaScript

网页的以一重要的角色JavaScript开始登场。它能使 HTML 页面更具动态性和交互性。

明月看潮生的博客 744

Claude Code设置中文输出指南

Claude Code 的语言配置其实并不复杂,只要做好全局的默认设置,再加上一些小的提醒技巧,就能完全避免突然切换英文的问题,让你全程用中文流畅地和 AI 助手协作,不用再被语言问题打断工作节奏,真正提升开发效率。

篮球界最会写bug的人;程序猿中打球最菜的人。 2231

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

html5与js语言有关吗,html5与javascript的区别是什么?

html5与javascript的区别是什么?下面本篇文章就来给大家介绍一下html5与javascript的区别,希望对大家有所帮助。什么是html5?HTML5是用于在WWW(万维网)上结构化和表示内容的HTML的最新(即,第五和当前的主要版本)和最增强的HTML版本。HTML5的一些优点:HTML5非常简单,语法清晰,它支持多媒体元素,它具有以下功能:访问用户地理位置,它允许客户端存储和客户...

weixin_30490729的博客 1476

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaScript和HTML脚本标记

标记   脚本标记有两个目的:   它确定在网页中的脚本块。 它加载的脚本文件。 它确实取决于对存在的src属性。在这两种情况下需要一个结束标记。   script标签可以包含以下属性:   SRC =“ URL “   SRC属性是可选的。如果它存在,那么它的值是一个URL标识。JS文件。页面加载和处理暂停,而浏览器获取,编

css教程 1461

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

javascript:html嵌入javascript代码的三种方式

一、概念 javascript是运行在浏览器中的脚本语言,运行在浏览器的内存当中,不需要程序员手动编译,编写玩源代码之后,浏览器直接打开解释执行,简称JS。 二、html嵌入javascript代码的三种方式 JS是一门事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序。 例如:在JS中有很多事件,其中有一个事件叫做:鼠标单击,click,并且任何事件都会对应一个事件句柄onclick。 1.事件句柄是以html标签的属性存在的。 在按钮标签中设置onclick属性值,则点击按钮发生click事件后,

qq_51476492的博客 1万+

HTML5 混合APP开发学习笔记(五)——JavaScript编程基础

JavaScript编程基础 写这一篇学习笔记还算是相对轻松的吧,终于,终于遇到了熟悉的知识了,毕竟接触了C++、C#和 Python,虽算不上精通,但也是花费精力去研究过,可以自娱自乐的写点脚本程序玩玩 一向秉承着重复性的工作都能交给计算机去完成的理念来学习编程,所以学习起来还是很有趣的。 废话不多说了,下面开始整理学习笔记,这里也就写写在JS中特有的一些知识吧。 JavaScript基础语法 ...

weixin_43569314的博客 1591

js HTML5 中定义的 JavaScript 脚本

一、跨文档消息传递 二、原生拖放 三、媒体元素 四、历史状态管理

青蛙king的博客 1385

javascript脚本必须位于HTML,JavaScript与HTML的结合方法详解

HTML中的JavaScript脚本必须位于与标签之间,JavaScript脚本可被放置在HTML页面的标签和标签中,这种视情况而定,一般放在标签内。一、 标签如需在HTML页面中插入JavaScript脚本,请使用标签。和会告诉JavaScript在何处开始和结束。和之间的代码行包含了JavaScript:alert("欢迎来到JavaScript世界!!!");您无需理解上面的代码。只需明白,...

weixin_39632891的博客 1103

编程笔记 html5&css&js 061 JavaScript 简介

JavaScript是一种广泛使用的编程语言,用于为网页添加交互功能。它是一种脚本语言,意味着它可以在浏览器中直接运行,而无需编译。JavaScript可以在客户端执行,与HTML和CSS配合使用,以实现动态网页效果。JavaScript最初由网景公司的Brendan Eich于1995年开发,当时被称为LiveScript。后来,为了利用当时非常流行的Java语言的声誉,它被更名为JavaScript。虽然它的名称与Java相似,但它们是完全不同的语言。

明月看潮生的博客 1401

p5.js 编程基础学习合集【2】

之前在《 p5.js 和 Processing 的恩怨情仇》曾提及 p5.js 与 Processing 的不同点之一就是: 在 JavaScript 中,变量没有类型。使用 var 而不是 float、int、double、long、char、String、Array 等。我们不需要为函数指定返回类型或参数类型。 var 可以是任何东西——任何提到的类型,也可以是函数。 #...

升卿 5002

JavaScript HTML5脚本编程

JavaScript HTML5脚本编程 一、跨文档消息传递 跨文档消息传送(XDM):在来自不同域的页面间传递消息。 postMessage()方法:向当前页面中的<iframe>元素或者由当前页面弹出的窗口传递数据。两个参数:一条消息、接收方来自哪个域。 var iframeWindow = document.getElementById("myfr...

欧唯薇 388

47HTML5新特性、JS【初识JS 、JS核心语法】

Javascript是基于对象和事件驱动的脚本语言,主要是嵌入到HTML中,应用在客户端,动态操作网页元素,也可以作用于服务端。 特点: 交互性(表单校验,信息提示,动态数据图表,ajax异步提交,解析服务端响应数据等等) 安全性(不可以直接访问本地硬盘) 跨平台性(由浏览器解析执行,和平台无关)

gangain的博客 977

《JavaScript高级程序设计》HTML5 脚本编程(学习笔记C16)

HTML5 脚本编程使用跨文档消息传递原生拖放音频与视频历史状态管理 简介:为了配合HTML5规范定义了很多新的HTML标记,HTML5 用显著篇幅定义了很多JavaScript API。 使用跨文档消息传递 简称XDM,指的是来自不同域的页面间传递消息。 核心是postMessage()方法 postMessage(): 向另一个地方传递数据 postMessage(一条消息, 消息接收方来自哪个域的字符串) 例: var iframeWindow = document.getElementById(

yuhong's blog 429
上一篇: Javascript学习笔记10 Canvas绘图
下一篇: Javascript学习笔记12 错误处理和调试
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值