在JavaScript中读取cookie的最短,准确和跨浏览器兼容的方法是什么?
通常,在构建独立脚本(我不能拥有任何外部依赖项)时,我发现自己添加了一个用于读取cookie的函数,并且通常会回退到QuirksMode.orgreadCookie()方法(280字节,216缩小).
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
它完成了这项工作,但它的丑陋,每次都增加了相当多的膨胀.
jQuery.cookie使用这样的方法(修改,165字节,125缩小):
function read_cookie(key)
{
var result;
return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这不是"Code Golf"竞赛:我有理由减少readCookie功能的大小,并确保我的解决方案有效.
当用户试图离开时,我试图给出一个警报确认对话框...我有以下代码,但它不太有效......
jQuery(window).unload(function() {
var yes = confirm("You're about to end your session, are you sure?");
if (yes) {
return true;
} else {
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
弹出窗口很好但是当我点击"否"时,它仍然会导航......
谢谢你的期待......
我想onblur在我的 Angular 9 应用程序中设置一个事件处理程序,以便在有人离开页面时处理。我的相关页面被映射到具有以下内容的单个组件......
export class HotComponent implements OnInit {
...
onBlur(): void {
console.log("on blur called !!!");
}
Run Code Online (Sandbox Code Playgroud)
在模板中,我设置了这个...
<div (blur)="onBlur()">
<div>
...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,当我离开加载此页面的浏览器窗口并返回时,我注意到onblur处理程序尚未被调用。在 Angular 9 中实现onblur页面事件处理程序的正确方法是什么?