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 的原型來增加一個函數,該函數返回當前對象的 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小時內與您取得聯系。