你是如何理解var e=e||window.event的------Day26

2023-05-16

你是如何理解var e=e||window.event的?相信很多人都能给我个回答说是:为了实现多种浏览器兼容。

不错,确实是为了实现浏览器兼容,但是它又是如何实现浏览器兼容的呢?

其实,如果把他写全的话,就好理解多了吧。

function(event){

var e=event?event||window.event;

}

这样来看的话,相信粗懂java的人都会知道了,如果存在event,那么var e=event;而如果不存在event,那么var e=window.event.这样的话我们就可以从字面上理解了个公式的意思,也能大体猜到的确能够实现兼容的。



但是我们再来细挖一下,它在究竟在什么浏览器下等于什么呢,又是为什么呢?我们先附上一个神图:


首先:我们进行ie和其他浏览器的判断

ie的document对象有一个all属性,它的里面存放了页面的所有标签,而其它浏览器是没有的,所以在ie中,事件对象的传播会绑定在全局的windows上,所以ie浏览器肯定是都支持window.event的

其次:特殊的firefox

firefox只支持事件对象作为参数传入,而这又恰恰是ie6/ie7/ie8所无法实现的,所以可以成功的区分这两类,写个实例进行测试的话,如下:

var btn = document.getElementById('btn');//一个按钮
btn.onclick = function(event){//给btn绑定一个点击事件
  //其他浏览器会在点击发生的时候,把事件对象当作参数传递过来
  alert('其他浏览器:' + event);
  //在ie浏览器中,这个event变量是空,它会在全局的window上
  alert('ie浏览器:' + window.event);
}
最后,就是ie9/chrome/opera/safari,则两种方式都支持,仅凭这点很难判定浏览器类型

但是,只要写上var e=event?event||window.event,我们的确是可以保证各浏览器的兼容的,你说对么


最近项目开始加速啊,累死啊,要睡了




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你是如何理解var e=e||window.event的------Day26 的相关文章

  • 随着窗口大小的调整而向上移动图像或 Div?

    我的 html 中有一个带有 stretch 类的图像 目前 使用 css 该图像的大小会随着窗口大小的调整而调整为屏幕宽度的 100 我还希望它在调整窗口大小时向上移动 我假设这可以用 jQuery 来完成 但我不太确定 基本上 顶部 C
  • 如何在 bash 脚本中执行命令,然后聚焦出现的窗口

    我有一个像这样的 bash 脚本 bin sh firefox Firefox 窗口打开 但没有焦点 我该怎么做才能让它自动获得焦点 我可以使用一些 X 窗口工具 命令 但如何获取 Firefox 的窗口 ID 窗口名称随着显示的 URL
  • 如何将 shm pixmap 与 xcb 一起使用?

    我尝试学习如何使用 xcb 库中的共享内存像素图 你们中有人有这方面的经验并想分享示例代码和 或信息吗 这会很有帮助 Thanks 经过一些研究 我发现了如何在 xcb 中使用共享内存像素图 这是我的测试代码 include
  • 为什么我设置xlib窗口背景透明失败?

    我使用以下代码获得透明窗口 但它返回黑色 我出了什么问题 并且 任何人都可以给我一个简单的例子来创建具有透明背景的窗口吗 谢谢 include
  • C# 将程序添加到Windows启动(Windows 7)

    我试图通过将程序执行路径添加到注册表编辑器来将我的程序添加到 Windows 启动程序中 这是代码 RegistryKey registryKey Registry CurrentUser OpenSubKey SOFTWARE Micro
  • 在窗口中的标题栏内/上方添加用户控件

    在 WPF 中 我想在窗口的标题栏中 上方添加一个 userControl 如下所示 红色部分是UserControl 绿色部分是标题栏 现在我希望能得到你的一些建议 需要扩展Window类或者只是自定义Window的样式 最好提供源码 您
  • 当页面比屏幕大时如何将div定位在屏幕中间

    您好 我正在使用类似于以下内容的方法来将 div 放置在屏幕中间
  • 在 C++ Windows API 中,在运行时调整窗口大小?

    当单击按钮时 如何在运行时调整全局 hwnd 变量的大小 或者只是在运行时调整窗口大小的任何方法 IE HWND hwnd global int buttonid 250 an id for a button also global int
  • 如何使调整 WPF 窗口大小时不那么“滞后”?

    我对 WPF 世界比较陌生 我立即注意到的一件事是 当您调整窗口大小时 窗口内容的绘制是多么滞后 例如 如果窗口边缘有滚动条 则这些滚动条在缩小时将部分隐藏 并且在放大时它们与窗口边框之间有空间 即使在 Visual Studio 中创建的
  • 无法打开目标 = 空白的 Electron webview 链接

    我正在使用 Electron 我有一个显示外部网站的 webview 但我无法成功显示通常由该网站上的链接打开且目标 blank 的附加窗口 a href mentions html target blank Mentions l gale
  • 在 ASP .NET Core 6.0 中获取 Windows 用户名

    我目前正在尝试将 ASP NET Core 5 0 项目迁移到 ASP NET Core 6 0 Window 用户名显示在 NET 5 0 上 但是 对于 NET 6 项目 窗口用户名始终使用匿名用户 我不确定我是否缺少任何代码 欢迎任何
  • screen.availHeight 和 window.height() 之间的区别

    我正在我的浏览器 Firefox 上执行以下 Javascript console debug 屏幕高度 屏幕可用高度 输出770 console debug 窗口高度 窗口 height 输出210 我也在使用 jQuery 两者有什么区
  • 在新选项卡或窗口中打开链接[重复]

    这个问题在这里已经有答案了 是否可以开一个a href链接在新选项卡而不是同一选项卡中 a href http your url here html Link a 您应该添加target blank and rel noopener nor
  • 在 JavaScript 中引用 C# 变量

    我已经阅读了很多线程 但我不明白为什么这不起作用 我正在创建一个将用作导航栏的 SharePoint Web 部件 一切都很顺利 直到我尝试在 JS 代码中引用 C 变量 这是来自 VisualWebPart1UserControl asc
  • 何时引发 Window.SourceInitialized 事件

    我能保证Window SourceInitialized事件总是会在Window Loaded事件 我需要HwndSource在我的中进一步处理的对象Window Loaded 事件处理程序我不确定到那时这是否总是可用 以下是您可以预期的事
  • 如何创建一个没有边框且只能通过手柄调整大小的 WPF 窗口?

    如果你设置ResizeMode CanResizeWithGrip 在 WPF 上Window然后右下角会出现一个调整大小的夹点 如下 如果你设置WindowStyle None 标题栏也会消失 但灰色斜边仍然保留 直到您设置ResizeM
  • 如何使用 MVVM 打开和关闭新 Windows?

    对于 MVVM 和 WPF 什么是处理打开和关闭新窗口和对话框的好 直接方法 打开和关闭应该由 ViewModel 驱动 对吗 但 ViewModel 不应该知道视图 我通常为此使用接口 例如 如果我想在单独的窗口中编辑记录 我有一个接口
  • tkinter:打开一个带有按钮提示的新窗口[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 用户如何按下 tkinter GUI 中的按钮来打开新窗口 我只需要非常简单的解决方案 如果代码也能被解释那就太好了 这
  • 如何动态调整jqgrid到当前窗口大小?

    如何动态调整jqgrid到当前窗口大小 基于javascript jQuery 最好的例子在这里 TinyMCE 去 http www tinymce com tryit full php http www tinymce com tryi
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web

随机推荐