改 HTMLElement 的原型来增加一个函数,该函数返回当前对象的 Proxy,并为每个属性添加 get 和 set 拦截器。以下是一个示例程序:
// 修改 HTMLElement 的原型,增加一个返回 Proxy 的方法
HTMLElement.prototype.getProxy=function() {
const handler={
get: (target, prop, receiver)=> {
console.log(`Getting property ${prop}`);
return Reflect.get(target, prop);
},
set: (target, prop, value, receiver)=> {
console.log(`Setting property ${prop} to ${value}`);
return Reflect.set(target, prop, value);
}
};
return new Proxy(this, handler);
};
document.addEventListener("DOMContentLoaded",()=>{
// 示例 HTML 元素
const div=document.createElement('div');
div.id='myDiv';
div.textContent='Hello, World!';
document.body.appendChild(div);
// 获取元素的 Proxy
const proxyDiv=div.getProxy();
// 访问和修改属性以触发拦截器
console.log(proxyDiv.id); // Getting property id
proxyDiv.textContent='Hello, Proxy!'; // Setting property textContent to Hello, Proxy!
})
如果属性的get、set方法由外部传入,可以定义一个map,存储拦截器信息。具体升级步骤如下:
内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿!
大家好,我是大澈!
本文约 700+ 字,整篇阅读约需 1 分钟。
今天分享一段优质 JS 代码片段,实现在关闭或刷新浏览器窗口时做提示。
老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!
window.addEventListener('beforeunload', function (event) {
const confirmationMessage="确定要离开此页面吗?您所做的更改可能不会被保存。";
event.preventDefault();
event.returnValue=confirmationMessage;
return confirmationMessage;
});
分享原因
这段代码展示了如何使用 JavaScript 的 beforeunload 事件来提示用户在关闭或刷新浏览器窗口时确认操作,从而避免意外的数据丢失或操作中断。
这种方法适用于 未保存的数据(如填写表单或编辑文档)、长时间操作(如文件上传或大规模数据处理)、敏感操作(如在线交易或重要系统设置)等场景。
项目中用到时直接CV,但对于用户体验而言,不宜过度使用。
代码解析
1. window.addEventListener('beforeunload', function (event) { ... })
为 window 对象添加一个 beforeunload 事件监听器。
当用户试图关闭或刷新浏览器窗口时,此事件将被触发。
2. event.preventDefault();
调用 event.preventDefault() 方法来阻止默认的浏览器行为。
在大多数情况下,这一步是冗余的,因为 beforeunload 事件默认不会执行任何动作,但这可以确保兼容性。
3. event.returnValue=confirmationMessage;
设置 event.returnValue 为 confirmationMessage 提示信息。
这是确保在大多数现代浏览器中显示确认对话框的关键步骤。
4. return confirmationMessage;
返回 confirmationMessage 提示信息。
在一些旧版浏览器中,这一步是必要的,以确保显示提示信息。
软计划在2020年1月15日正式发布新的Microsoft Edge浏览器,并决定通过Windows Update推出它,而不是手动下载它。
安装新的浏览器后,它将替换设备上现有的Microsoft Edge浏览器,这对许多人来说是一件好事,因为它将提供与网站的更大兼容性,并提高性能。
但是,对于使用为Microsoft Edge的EdgeHTML呈现引擎构建的网站的组织而言,这种强制安装可能是他们不想要的。
为了容纳这些企业用户,Microsoft发布了支持文档和称为Microsoft Edge Blocker Toolkit的工具,该工具可用于创建注册表值,该注册表值阻止新Microsoft Edge的自动交付。
“为帮助我们的客户变得更加安全和最新,Microsoft将通过Windows 10 RS4及更高版本的自动更新来分发Microsoft Edge(基于Chromium)。Blocker Toolkit适用于希望阻止自动交付Windows 10 RS4的组织。 Microsoft Edge(基于Chromium)连接到启用了自动更新的环境中的计算机。“阻止程序工具包”不会过期。”
Microsoft声明此注册表值仅在Windows 10 RS4(版本1803)或更高版本上可用,并且仅阻止使用Windows Update安装Microsoft Edge。
阻止程序工具包包括HTML指令,CMD脚本和组策略模板,这些模板可用于控制新Microsoft Edge浏览器的自动交付,我们将在下一部分中进行讨论。
Microsoft已在Windows 10中添加了新的注册表值,该值阻止自动安装新的Microsoft Edge。
需要在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ EdgeUpdate项下创建此新值,并将其称为DoNotUpdateToEdgeWithChromium。
如果将此值设置为1,Edge将通过Windows Update阻止,如果将其设置为0或丢失,Edge将被自动安装。
下面,我们提供了三种方法,用户可用来在Windows设备上创建此注册表值。
对于习惯于修改Windows注册表的用户,最简单的方法是手动创建或通过如下所示的注册表文件创建DoNotUpdateToEdgeWithChromium注册表值键。
Windows注册表编辑器版本5.00
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ EdgeUpdate]
“ DoNotUpdateToEdgeWithChromium”=dword:00000001
要使用注册表文件进行更改,只需按照以下步骤操作:
这将导致 自动创建DoNotUpdateToEdgeWithChromium注册表值并将其设置为1,如下所示。
DoNotUpdateToEdgeWithChromium注册表值已创建
如果您不满意创建上述注册表文件,则可以从此处下载它。
Microsoft已发布Microsoft Edge Blocker Toolkit,该工具包可在本地或远程计算机上自动创建注册表值。
要使用该工具,只需下载程序并执行以将附带的文件提取到文件夹中即可。提取的文件将由组策略模板,HTML指令和名为EdgeChromium_Blocker.cmd的CMD脚本组成。
要使用EdgeChromium_Blocker.cmd,请打开提升权限的命令提示符,将cd插入您解压缩文件的目录中,然后执行EdgeChromium_Blocker.cmd脚本以查看下面显示的帮助屏幕。
MICROSOFT TOOL KIT TO DISABLE DELIVERY OF MICROSOFT EDGE (CHROMIUM-BASED) Copyright (C) Microsoft Corporation. All rights reserved. This tool can be used to remotely block or unblock the delivery of Microsoft Edge (Chromium-based) via Automatic Updates. ------------------------------------------------------------ Usage: EdgeChromium_Blocker.cmd [machine name] [/B] [/U] [/H] B=Block Microsoft Edge (Chromium-based) deployment U=Allow Microsoft Edge (Chromium-based) deployment H=Help To block or unblock installation on the local machine use period ("." with no quotes) as the machine name Examples: EdgeChromium_Blocker.cmd mymachine /B (blocks delivery on machine "mymachine") EdgeChromium_Blocker.cmd /U (unblocks delivery on the local machine) ------------------------------------------------------------
要阻止Microsoft Edge的自动安装,您将执行“ EdgeChromium_Blocker.cmd / B ”命令。
要取消阻止Microsoft Edge的安装,请执行“ EdgeChromium_Blocker.cmd / U ”命令。
可以用来阻止自动安装基于Chromium的Microsoft Edge的最终方法是下载并安装Microsoft Edge Blocker Toolkit。
解压缩文件后,将EdgeChromium_Blocker.adml文件复制到C:\ Windows \ PolicyDefinitions文件夹,将EdgeChromium_Blocker.admx文件复制到C:\ Windows \ PolicyDefinitions \ en-us文件夹。
现在,您可以打开组策略编辑器,并且以下文件夹下提供了一个名为“不允许通过自动更新传递Microsoft(基于Chromium的)Microsoft”的新策略:
/Computer Configuration /Administrative Templates /Windows Components /Windows Update /Microsoft Edge (Chromium-based) Blockers
可以在下面的策略编辑器中看到此新策略。
新的Microsoft Edge政策
启用后,组策略编辑器将自动将DoNotUpdateToEdgeWithChromium值添加到注册表中。
*请认真填写需求信息,我们会在24小时内与您取得联系。