Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
改 HTMLElement 的原型來(lái)增加一個(gè)函數(shù),該函數(shù)返回當(dāng)前對(duì)象的 Proxy,并為每個(gè)屬性添加 get 和 set 攔截器。以下是一個(gè)示例程序:
// 修改 HTMLElement 的原型,增加一個(gè)返回 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();
// 訪問(wèn)和修改屬性以觸發(fā)攔截器
console.log(proxyDiv.id); // Getting property id
proxyDiv.textContent='Hello, Proxy!'; // Setting property textContent to Hello, Proxy!
})
如果屬性的get、set方法由外部傳入,可以定義一個(gè)map,存儲(chǔ)攔截器信息。具體升級(jí)步驟如下:
內(nèi)容首發(fā)于工粽號(hào):程序員大澈,每日分享一段優(yōu)質(zhì)代碼片段,歡迎關(guān)注和投稿!
大家好,我是大澈!
本文約 700+ 字,整篇閱讀約需 1 分鐘。
今天分享一段優(yōu)質(zhì) JS 代碼片段,實(shí)現(xiàn)在關(guān)閉或刷新瀏覽器窗口時(shí)做提示。
老規(guī)矩,先閱讀代碼片段并思考,再看代碼解析再思考,最后評(píng)論區(qū)留下你的見(jiàn)解!
window.addEventListener('beforeunload', function (event) {
const confirmationMessage="確定要離開此頁(yè)面嗎?您所做的更改可能不會(huì)被保存。";
event.preventDefault();
event.returnValue=confirmationMessage;
return confirmationMessage;
});
分享原因
這段代碼展示了如何使用 JavaScript 的 beforeunload 事件來(lái)提示用戶在關(guān)閉或刷新瀏覽器窗口時(shí)確認(rèn)操作,從而避免意外的數(shù)據(jù)丟失或操作中斷。
這種方法適用于 未保存的數(shù)據(jù)(如填寫表單或編輯文檔)、長(zhǎng)時(shí)間操作(如文件上傳或大規(guī)模數(shù)據(jù)處理)、敏感操作(如在線交易或重要系統(tǒng)設(shè)置)等場(chǎng)景。
項(xiàng)目中用到時(shí)直接CV,但對(duì)于用戶體驗(yàn)而言,不宜過(guò)度使用。
代碼解析
1. window.addEventListener('beforeunload', function (event) { ... })
為 window 對(duì)象添加一個(gè) beforeunload 事件監(jiān)聽(tīng)器。
當(dāng)用戶試圖關(guān)閉或刷新瀏覽器窗口時(shí),此事件將被觸發(fā)。
2. event.preventDefault();
調(diào)用 event.preventDefault() 方法來(lái)阻止默認(rèn)的瀏覽器行為。
在大多數(shù)情況下,這一步是冗余的,因?yàn)?beforeunload 事件默認(rèn)不會(huì)執(zhí)行任何動(dòng)作,但這可以確保兼容性。
3. event.returnValue=confirmationMessage;
設(shè)置 event.returnValue 為 confirmationMessage 提示信息。
這是確保在大多數(shù)現(xiàn)代瀏覽器中顯示確認(rèn)對(duì)話框的關(guān)鍵步驟。
4. return confirmationMessage;
返回 confirmationMessage 提示信息。
在一些舊版瀏覽器中,這一步是必要的,以確保顯示提示信息。
軟計(jì)劃在2020年1月15日正式發(fā)布新的Microsoft Edge瀏覽器,并決定通過(guò)Windows Update推出它,而不是手動(dòng)下載它。
安裝新的瀏覽器后,它將替換設(shè)備上現(xiàn)有的Microsoft Edge瀏覽器,這對(duì)許多人來(lái)說(shuō)是一件好事,因?yàn)樗鼘⑻峁┡c網(wǎng)站的更大兼容性,并提高性能。
但是,對(duì)于使用為Microsoft Edge的EdgeHTML呈現(xiàn)引擎構(gòu)建的網(wǎng)站的組織而言,這種強(qiáng)制安裝可能是他們不想要的。
為了容納這些企業(yè)用戶,Microsoft發(fā)布了支持文檔和稱為Microsoft Edge Blocker Toolkit的工具,該工具可用于創(chuàng)建注冊(cè)表值,該注冊(cè)表值阻止新Microsoft Edge的自動(dòng)交付。
“為幫助我們的客戶變得更加安全和最新,Microsoft將通過(guò)Windows 10 RS4及更高版本的自動(dòng)更新來(lái)分發(fā)Microsoft Edge(基于Chromium)。Blocker Toolkit適用于希望阻止自動(dòng)交付Windows 10 RS4的組織。 Microsoft Edge(基于Chromium)連接到啟用了自動(dòng)更新的環(huán)境中的計(jì)算機(jī)。“阻止程序工具包”不會(huì)過(guò)期。”
Microsoft聲明此注冊(cè)表值僅在Windows 10 RS4(版本1803)或更高版本上可用,并且僅阻止使用Windows Update安裝Microsoft Edge。
阻止程序工具包包括HTML指令,CMD腳本和組策略模板,這些模板可用于控制新Microsoft Edge瀏覽器的自動(dòng)交付,我們將在下一部分中進(jìn)行討論。
Microsoft已在Windows 10中添加了新的注冊(cè)表值,該值阻止自動(dòng)安裝新的Microsoft Edge。
需要在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ EdgeUpdate項(xiàng)下創(chuàng)建此新值,并將其稱為DoNotUpdateToEdgeWithChromium。
如果將此值設(shè)置為1,Edge將通過(guò)Windows Update阻止,如果將其設(shè)置為0或丟失,Edge將被自動(dòng)安裝。
下面,我們提供了三種方法,用戶可用來(lái)在Windows設(shè)備上創(chuàng)建此注冊(cè)表值。
對(duì)于習(xí)慣于修改Windows注冊(cè)表的用戶,最簡(jiǎn)單的方法是手動(dòng)創(chuàng)建或通過(guò)如下所示的注冊(cè)表文件創(chuàng)建DoNotUpdateToEdgeWithChromium注冊(cè)表值鍵。
Windows注冊(cè)表編輯器版本5.00
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ EdgeUpdate]
“ DoNotUpdateToEdgeWithChromium”=dword:00000001
要使用注冊(cè)表文件進(jìn)行更改,只需按照以下步驟操作:
這將導(dǎo)致 自動(dòng)創(chuàng)建DoNotUpdateToEdgeWithChromium注冊(cè)表值并將其設(shè)置為1,如下所示。
DoNotUpdateToEdgeWithChromium注冊(cè)表值已創(chuàng)建
如果您不滿意創(chuàng)建上述注冊(cè)表文件,則可以從此處下載它。
Microsoft已發(fā)布Microsoft Edge Blocker Toolkit,該工具包可在本地或遠(yuǎn)程計(jì)算機(jī)上自動(dòng)創(chuàng)建注冊(cè)表值。
要使用該工具,只需下載程序并執(zhí)行以將附帶的文件提取到文件夾中即可。提取的文件將由組策略模板,HTML指令和名為EdgeChromium_Blocker.cmd的CMD腳本組成。
要使用EdgeChromium_Blocker.cmd,請(qǐng)打開提升權(quán)限的命令提示符,將cd插入您解壓縮文件的目錄中,然后執(zhí)行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的自動(dòng)安裝,您將執(zhí)行“ EdgeChromium_Blocker.cmd / B ”命令。
要取消阻止Microsoft Edge的安裝,請(qǐng)執(zhí)行“ EdgeChromium_Blocker.cmd / U ”命令。
可以用來(lái)阻止自動(dòng)安裝基于Chromium的Microsoft Edge的最終方法是下載并安裝Microsoft Edge Blocker Toolkit。
解壓縮文件后,將EdgeChromium_Blocker.adml文件復(fù)制到C:\ Windows \ PolicyDefinitions文件夾,將EdgeChromium_Blocker.admx文件復(fù)制到C:\ Windows \ PolicyDefinitions \ en-us文件夾。
現(xiàn)在,您可以打開組策略編輯器,并且以下文件夾下提供了一個(gè)名為“不允許通過(guò)自動(dòng)更新傳遞Microsoft(基于Chromium的)Microsoft”的新策略:
/Computer Configuration /Administrative Templates /Windows Components /Windows Update /Microsoft Edge (Chromium-based) Blockers
可以在下面的策略編輯器中看到此新策略。
新的Microsoft Edge政策
啟用后,組策略編輯器將自動(dòng)將DoNotUpdateToEdgeWithChromium值添加到注冊(cè)表中。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。