首页
壁纸
关于
发现大佬
Search
1
XBOX土耳其阿根廷购买教程
4,070 阅读
2
Oculus Quest2 无线投屏到PC
2,874 阅读
3
openwrt路由器安装uu加速器插件
1,992 阅读
4
xiaomi 小米pad 5 pro adb 删除自带app 系统精简 (非root)
1,555 阅读
5
Xbox Series X / S 开箱~~~~激动无比
1,322 阅读
学习
QuantumultX
JavaScript
web3
react
Solidity
雅思
Azure
游戏
随笔
登录
/
注册
Search
标签搜索
javascript
XSX
js
游戏
xbox
css
游戏截图
Xbox Series X
刺客信条
刺客信条英灵殿
web3
雅思
学习
IELTS
英语
教程
Xbox Series S
Steam
截图
leetcode
Arthur
累计撰写
109
篇文章
累计收到
104
条评论
首页
栏目
学习
QuantumultX
JavaScript
web3
react
Solidity
雅思
Azure
游戏
随笔
页面
壁纸
关于
发现大佬
搜索到
32
篇与
JavaScript
的结果
懒加载引用第三方js,css文件
export const loadResourceInHead = (src) => { return new Promise((resolve, reject) => { if (!src) { reject('The src cannot be empty!'); return; } if (src.startsWith('/')) { // src = endpoints.ui + src; } let suffix = src.substring(src.lastIndexOf('.') + 1); if (suffix.indexOf('?') >= 0) { suffix = suffix.substring(0, suffix.indexOf('?')); // eslint-disable-next-line no-undef src += '&hash=' + __webpack_hash__; } else { // eslint-disable-next-line no-undef src += '?' + __webpack_hash__; } const isScript = suffix.toLowerCase() === 'js'; const tagName = isScript ? 'script' : 'link'; const loadedTag = document.head.querySelector(tagName + "[" + (isScript ? "src" : "href") + "^='" + src + "']"); if (loadedTag) { if (loadedTag.ready) { resolve(); return; } const oldOnload = loadedTag.onload; loadedTag.onload = function (res) { oldOnload && oldOnload(); resolve(res); }; return; } const tag = document.createElement(tagName); tag.type = isScript ? 'text/javascript' : 'text/css'; tag[isScript ? 'src' : 'href'] = src; if (!isScript) { tag.rel = 'stylesheet'; } document.head.appendChild(tag); $$.loading(true); tag.onload = function (res) { $$.loading(false); tag.ready = true; resolve(res); }; tag.onerror = function (error) { $$.loading(false); reject(error); }; }); }; 用法: window.promiseAll( utils.loadResourceInHead("ckeditor.js"), utils.loadResourceInHead("math.js"), utils.loadResourceInHead("music.js"), ).then(() => { if (!RichEditor.loaded) { RichEditor.loaded = true; } this.setState({ loaded: true }); });
2023年11月27日
61 阅读
0 评论
0 点赞
2023-07-26
关闭/刷新 网页时发送请求
关闭/刷新 网页时发送请求 有时候我们需要在用户离开页面的时候,做一些上报来记录用户行为。又或者是发送服务器ajax请求,通知服务器用户已经离开,比如直播间内的退房操作。 这里涉及到Window: beforeunload event The beforeunload event is fired when the window, the document and its resources are about to be unloaded. The document is still visible and the event is still cancelable at this point. This event enables a web page to trigger a confirmation dialog asking the user if they really want to leave the page. If the user confirms, the browser navigates to the new page, otherwise it cancels the navigation. 注意:Sticky activation is required. The user has to have interacted with the page in order for this feature to work. 发送移步请求会被浏览器abort ,有下面两种解决办法 Navigator: sendBeacon() method 会发送一个post 的fetch请求,及时浏览器关闭也会发出去,但是有64kb限制,而且只能在beforeunload 或者visibilitychange 中使用 其他事件中回调,会丢失数据。 只能发送post请求,无法自定义请求头 sendBeacon(url) sendBeacon(url, data) fetch 请求,keepalive The keepalive option can be used to allow the request to outlive the page. Fetch with the keepalive flag is a replacement for the Navigator.sendBeacon() API. 标记keepalive的fetch请求允许在页面卸载后执行。 const data = JSON.stringify({ time: performance.now() }); fetch(url, { method: 'POST', body: data, headers: { 'Content-Type': 'application/json' }, keepalive: true, });
2023年07月26日
81 阅读
0 评论
0 点赞
2023-03-22
让第一个可获得焦点的元素获得焦点
window.CommonUtil.toFocusChildNode = function (elements) { // e.g. // elements = [ // '.common-content .****', // '.common-content', // ]; let focusEle = null; for (let item of elements) { let focusable = $(item).find(':focusable:visible:not(:disabled):not([aria-disabled="true"]):not([tabindex="-1"])'); if (focusable.length > 0) { focusEle = focusable[0]; break; } } focusEle && focusEle.focus(); }
2023年03月22日
210 阅读
0 评论
0 点赞
2023-01-31
React componentWillUnmount 清除异步state操作
React componentWillUnmount 清除异步state操作 Can’t perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method. 原因: 通常是 react 组件已经从 DOM 中移除,但是我们在组件中做的一些异步操作还未结束,如:接口调用等,当其完成时,执行setState操作,而此时我们已经将改组件dom移除,从而导致上述问题。 解决办法: componentWillUnmount() { this.setState = (state, callback) => { return; } }
2023年01月31日
143 阅读
0 评论
0 点赞
js获取页面元素距离浏览器工作区顶端的距离
js获取页面元素距离浏览器工作区顶端的距离 先介绍几个属性: 网页被卷起来的高度/宽度(即浏览器滚动条滚动后隐藏的页面内容高度) (javascript) document.documentElement.scrollTop //firefox (javascript) document.documentElement.scrollLeft //firefox (javascript) document.body.scrollTop //IE (javascript) document.body.scrollLeft //IE (jqurey) $(window).scrollTop() (jqurey) $(window).scrollLeft() 网页工作区域的高度和宽度 (javascript) document.documentElement.clientHeight// IE firefox (jqurey) $(window).height() 元素距离文档顶端和左边的偏移值 (javascript) DOM元素对象.offsetTop //IE firefox (javascript) DOM元素对象.offsetLeft //IE firefox (jqurey) jq对象.offset().top (jqurey) jq对象.offset().left
2022年05月01日
197 阅读
0 评论
0 点赞
1
2
...
7