<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
協定,域名,埠相同,就具有相同的源
同源策略:瀏覽器提供的一個安全策略
跨域的出現原因:瀏覽器的同源策略不允許非同源的URL之間進行資源的互動
解決跨域由兩種方式:JSONP, CORS
JSONP: 只支援GET請求
通過script標籤的src屬性,請求跨域的資料介面,並通過函數呼叫的形式,接收跨域介面響應回來的資料
CORS:出現的較晚,是W3C標準,屬於跨域Ajax請求的根本解決方案,支援GET和POST請求,不相容低版本的瀏覽器
jQuery中的JSONP 通過script標籤的src屬性,實現跨域資料存取的,jQuery採用的是動態建立和移除script標籤的方式,來發起JSONP資料請求
在發起JSONP請求的時候,動態向head中append一個script標籤
JSONP請求成功之後,動態從head中移除剛才append進去的script標籤
$(function () { $.ajax({ url: "http://www.liulongbin.top:3006/api/jsonp?name='zs'&age=12", dataType: 'jsonp', // 傳送到伺服器的引數名稱,預設值為callback jsonp: 'callback', // 自定義回撥函數名稱 預設值為jQueryxxxx jsonpCallback: 'abc', success(res) { console.log(res) }, }) })
防抖策略:當事件被觸發後,延遲n秒後再執行回撥,如果在這n秒內事件又被觸發,則重新計時
應用場景:
使用者在輸入框中連續輸入一串字串,可以通過防抖策略,只在輸入完後,才執行查詢的請求,這樣可以有效的減少請求次數,節約請求資源
var timer = null //1-1防抖的timer $('#ipt').on('keyup', function () { // 1-3 清除timer clearTimeout(timer) //省略其他程式碼.... // 1-2定義防抖 // 獲取搜尋列表 timer = setTimeout(function () { getSuggestList(keywords) }, 800) })
var cacheObj= {}
// 渲染UI結構 function renderSUggestList(res) { // 如果沒有資料需要渲染 直接return if (res.result.length <= 0) { return $('.suggest-list').empty().hide() } var rows = [] // console.log(res.result) $.each(res.result, function (i, item) { // console.log(item[0]) rows.push(` <div class="suggest-item">${item[0]}</div> `) }) $('.suggest-list').empty().append(rows.join('')).show() // 1獲取使用者輸入的內容 當做鍵 var k = $('#ipt').val().trim() // 將資料作為值 進行快取 cacheObj[k] = res // console.log(cacheObj) }
$('#ipt').on('keyup', function () { // 1-3 清除timer clearTimeout(timer) // 1獲取使用者輸入的內容 var keywords = $(this).val().trim() // 2 判斷使用者輸入的內容是否為空 // 清空搜尋列表 if (keywords.length <= 0) { return $('.suggest-list').empty().hide() } // console.log(keywords) // 先判斷快取中是否有資料 if (cacheObj[keywords]) { return renderSUggestList(cacheObj[keywords]) } // 1-2定義防抖 // 獲取搜尋列表 timer = setTimeout(function () { getSuggestList(keywords) }, 800) })
節流策略:可以減少一段時間內事件的觸發頻率
場景:
滑鼠連續不斷的觸發某事件(點選),只在單位時間內觸發一次
懶載入時要監聽計算卷軸的位置,不必每次滑動都觸發,可以降低計算的頻率,而不必去浪費CPU資源
節流閥為空,可以執行下次操作;不為空,不能執行下次操作
當前操作執行完,必須將節流閥重置為空,表示可以執行下次操作了
每次執行操作前,先判斷節流閥是否為空
$(function () { // 獲取圖片 var angel = $('#angel') // 定義一個timer節流閥 var timer = null $(document).on('mousemove', function (e) { //每次執行操作前,先判斷節流閥是否為空 不為空 不能執行(證明距離上次執行不足16毫秒) if (timer) { return } timer = setTimeout(function () { console.log(e.pageX, e.pageY) angel.css('top', e.pageY + 'px').css('left', e.pageX + 'px') timer = null //設定了滑鼠跟隨效果後,清空節流閥 方便下次開啟定時器 }, 160) }) })
以上就是JS前端同源策略和跨域及防抖節流詳解的詳細內容,更多關於JS同源策略跨域防抖節流的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45