js代码

JS的异步与加载时间线

为君一笑 提交于 2020-03-12 04:07:06
一、JS同步和异步 1、同步模式:又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,因此停止了后续文件的加载、渲染、代码执行(即如果加载到js文件要等到文件加载完成后执行,才能继续执行后面的代码)。所以默认同步执行才是安全的。但这样如果js中有输出document内容、修改dom、重定向等行为,就会造成页面堵塞。所以一般建议把 < script > 标签放在< body>结尾处,这样尽可能减少页面阻塞。 2、异步模式:按需加载,用到的时候再加载,不用到就不需要加载,例如回调函数。(异步在加载的过程中产生一个子进程去加载当前程序,自己去执行下一个程序) 特点:单线程的异步就是多线程,只不过用异步的方式表现出来了 3、同步和异步的区别:JavaScript 为单线程,所以同步为单线程,异步为模拟多线程;同步和异步的区别在于在执行程序的顺序不同。 4、异步 三种方式 (1)defer在DOM文档解析完成之后才执行js文件,IE独有 在IE低版本中 defer 可以让script请求的文件异步加载 <script defer> console. log ( "hello" ) ; </script> (2)async 针对其他浏览器,加载完就执行,只能加载外部脚本 不能把js代码写在js文件里 <script src = "load.js" async> </script> ``

使用微信JS-SDK调用微信浏览器的接口

自作多情 提交于 2020-03-12 01:57:03
先附上微信公众平台的相关链接: 微信公众平台: https://mp.weixin.qq.com/ 微信公众平台开发文档: https://mp.weixin.qq.com/wiki 微信公众平台JS-SDK开发文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN 阅读文档可知,基本流程如下: 1.绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 2.引入JS文件 在需要调用JS接口的页面引入如下JS文件 http(s)://res.wx.qq.com/open/js/jweixin-1.0.0.js 如需使用摇一摇周边功能,请引入 http://res.wx.qq.com/open/js/jweixin-1.1.0.js 3.通过config接口注入权限验证配置 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填

js数据结构与算法存储结构

孤街醉人 提交于 2020-03-12 01:50:30
数据结构(程序设计=数据结构+算法) 数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合。 传统上,我们把数据结构分为逻辑结构和物理结构。 逻辑结构: 是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的问题。 物理结构: 是指数据的逻辑结构在计算机中的存储形式。 常用的数据结构有: 数组,队列(queue),堆(heap),栈(stack),链表(linked list ),树(tree),图(graph)和散列表(hash) 栈(stack):运算只在表的一端进行;队列(Queue):运算只在表的两端进行。 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 与栈相反,队列是一种先进先出(First In First Out, FIFO)的线性表。 与栈相同的是,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础。 四大结构 集合结构 线性结构 树形结构 图形结构 顺序存储和链式存储 数据元素的存储结构形式有两种:顺序存储和链式存储。 例如我们编程语言的数组结构就是这样滴。 链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。 链式存储结构 线性表 线性表:就好像是排队一样,具有线一样性质的结构,它是由零个或多个数据元素组成的有限序列。 若元素存在多个

JS之document.cookie详解以及$.cookie的使用

纵然是瞬间 提交于 2020-03-11 22:29:08
文章目录 什么是cookie? 设置cookie 获取cookie的值 常用的cookie操作及其函数实现 addCookie getCookie deleteCookie jQuery cookie的使用 什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie: document.cookie="userId=828"; document.cookie看上去就像一个属性,可以赋不同的值。但它和一般的属性不一样,改变 它的赋值并不意味着丢失原来的值,例如连续执行下面两条语句: document.cookie="userId=828"; document.cookie="userName=hulk"; 这时浏览器将维护两个cookie,分别是userId和userName,因此给document.cookie赋值更像执 行类似这样的语句: document.addCookie("userId=828"); document.addCookie("userName=hulk"); 事实上

前端常见跨域解决方案(全)

时间秒杀一切 提交于 2020-03-11 21:53:21
什么是跨域? 跨域是指一个域下的文档或脚本试图去请求另一个域下的资源,这里跨域是广义的。 广义的跨域: 1.) 资源跳转: A链接、重定向、表单提交 2.) 资源嵌入:<link>、<script>、<img>、<frame>等dom标签,还有样式中background:url()、@font-face()等文件外链 3.) 脚本请求: js发起的ajax请求、dom和js对象的跨域操作等 其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。 什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个ip地址,也非同源。 同源策略限制以下几种行为: 1.) Cookie、LocalStorage 和 IndexDB 无法读取 2.) DOM 和 Js对象无法获得 3.) AJAX 请求不能发送 常见跨域场景 URL 说明 是否允许通信 http://www. domain.com/a.js http://www. domain.com/b.js 同一域名,不同文件或路径 允许 http://www. domain.com/lab

图片滚动js代码

自古美人都是妖i 提交于 2020-03-11 14:57:29
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=" http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=" Content-Type" content=" text/html; charset=gb2312" /> <meta name=" keywords" content=" JS代码,图片特效,JS广告代码,JS特效代码" /> <meta name=" description" content=" 此代码内容为四图横向滚动效果(可自动可手动),属于站长常用代码,更多图片特效代码请访问xw素材网JS代码频道。" /> <title>jquery图片左右无缝滚动带有手动和自动图片滚动_xw素材网 </title> <link type=" text/css" href=" css/jq22.css " rel=" stylesheet" /> <script type=" text/javascript" src=" js/jquery.js "> </script> <script type="

vue的基础用法

浪子不回头ぞ 提交于 2020-03-11 14:26:18
基础用法(没有搭建框架就在html文件里演示) 一、 Hello World起步 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello World</title> </head> <body> <!-- 模板 --> <div id="app"> <!-- 声明式渲染 --> <h1>{{ msg }}</h1> </div> <!-- 引入vue --> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script> // 创建一个vue对象,同时将这个对象挂载到 #app(这里是元素id) 的元素上 let app = new Vue({ // 挂载点 el: '#app', // Vue 对象中管理的数据 VM ( ViewModel ), 可以直接在面板上通过声明来进行数据访问 data: { msg: 'Hello World' } }) </script> </body> </html> 浏览器显示如图: 二、模板语法 2.1、v-html指令 双大括号会将数据解释为纯文本,而非 HTML 。为了输出真正的 HTML ,你需要使用 v-html 指令 被插入的内容都会被当做 HTML ——

js异步加载和时间线的理解

别等时光非礼了梦想. 提交于 2020-03-11 13:03:02
JS的异步加载方案有三种 1.defer 仅限IE 2.async html5中新增属性 3.按需加载:   创建script标签   为其设置src属性   成为异步后再插入到dom中 defer 属性 在 < ! DOCTYPE html > < html > < head > < script src = "test1.js" defer = "defer" > < / script > < script src = "test2.js" defer = "defer" > < / script > < / head > < body > < ! -- 这里放内容 -- > < / body > async 属性 < head > < script src = "test1.js" async > < / script > < script src = "test2.js" async > < / script > < / head > 动态创建DOM方式 //这些代码应被放置在标签前(接近HTML文件底部) < script type = "text/javascript" > function downloadJSAtOnload ( ) { varelement = document . createElement ( "script" ) ; element .

JS 复制到黏贴板上

亡梦爱人 提交于 2020-03-11 12:58:54
<script type="text/javascript"> function copyUrl2() { var Url2=document.getElementById("biao1"); Url2.select(); // 选择对象 document.execCommand("Copy"); // 执行浏览器复制命令 alert("已复制好,可贴粘。"); } </script> <textarea cols="20" rows="10" id="biao1">用户定义的代码区域</textarea> <input type="button" onClick="copyUrl2()" value="点击复制代码" /> 注意: 1、select();是js原生的方法。如果用jq找到的元素,需要把jq对象转为js对象。 转的方法:如下 1. DOM 对象转成 jQuery 对象 对于已经是一个 DOM 对象,只需要用 $() 把DOM对象包装起来,就可以获得一个 jQuery 对象了,$(DOM 对象) 注: var是定义变量 如:  var v = document.getElementById("v"); //DOM对象 var $v = $(v); //jQuery 对象 转换后,就可以任意使用 jQuery 的方法。 2. jQuery 对象转成 DOM 对象

js 基础知识 点

為{幸葍}努か 提交于 2020-03-11 01:57:00
【作用域】 --当在函数中操作一个变量时,会先在自身作用域中查找,如果有就直接使用, 如果没有则向上一级作用域查找,知=直到找到全局作用域window.b= --在函数中不使用var 声明的变量则会设置为全局变量, --定义形参就相当于在函数中声明了一个变量 【构造函数】: --构造函数和普通函数的区别是调用方式的不同,普通直接调用,构造通过new关键字调用 --【构造函数的执行流程】, 1,创建一个新对象, 2,将新建的对象设置为函数中的this 3,逐步执行函数中的代码 4,将新建的对象作为返回值返回 --【原型】: 1,每一个构造函数都有一个prototype原型,是一个指针,指向一个对象,对象里 保存了实例共享的属性和方法,原型是给实例提供属性和方法的,每一个实例都有 一个指向原型的指针_proty_;当我们访问实例的一个属性互或方法时,会先在 对象自身查找,如果有则直接使用,如果没有,会去原型对象中寻找,找到则直接使用 【检查对象是否包含某属性】: -可以使用对象的hasOwnProperty() 来检查对象自身中是否有该属性 --object.hasOwnProperty(''name') 如果有该属性则返回true 【随机数】: ---Math.random()可以生成0-1之间的随机数, -》生成0-10之间的随机数Math.round(Math.random()