首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
icons
hybrid
dialog
svg
css3
overflow
layout
vue
v8
npm
iframe
postman
ajax
javascript
js
build
textview
jquery
上传
charts
view
webkit
chrome
scheme
cookies
checkbox
chart.js
label
正则
bootstrap
firefox
listview
console
firebug
html5
focus
react
html
button
chart
node.js
css
scroll
requirejs
yarn
dom
jq
vue.js
json
base64
微信开发
当前位置:
开发笔记
>
前端
> 正文
判定对象是否为window的js代码
作者:提着变形金刚的Oceannk_737 | 来源:互联网 | 2022-09-21 04:35
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]结果是五花八门: [object Object]IE6 [object
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
结果是五花八门:
[object Object]IE6
[object Object]IE8
[object Window]firefox3.6
[object Window]opera10
[object DOMWindow]safai4.04
[object global]chrome5.0.3.22
看一下赫赫有名怎样判定,就判定它是否存在一个叫setInterval的属性。啧啧,好像不太严谨,但也无法严谨下去了,因为在IE中无法判定泛化函数是否函数,Object.prototype.toString.call一律打出[object Object],也没有name属性。由于太容易仿造,弃之不用。
无奈之下,逐一检查其属性,看有什么特别属性。终于发现了,有一个同名的window属性,它是无限循环引用自身。这个在IE中还点问题。
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
IE会弹出false,其他浏览器弹出true。不过下面这样所有浏览器都统一了:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
有没有严谨的判定呢?不要忘记window是无限循环引用自身,应该说是引用上一个自己。因此,我们可以:
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
最后得出:
代码如下:
var isWindow = function(obj){
return obj.window === obj.window.window
}
======================华丽的分界线=====================
感谢 Ivony提供的灵感!
代码如下:
function isWindow( obj ){
if(typeof obj !== "object") return false;//必须是一个对象
var expando = "dom"+(new Date-0) //生成一个随机变量名
//全局解析代码,IE的eval只对原作用域有效
//详见http://www.javaeye.com/topic/519098
//加之eval与with是 html5严格模式下要禁止的东西,弃之不用!
var js = document.createElement("script");
var head = document.getElementsByTagName("head")[0];
head.insertBefore(js,head.firstChild);
js.text = expando + " = {};"
head.removeChild(js)
return window[expando] === obj[expando]
}
isWindow(window)
firefox
chrome
html
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
chrome
CSS |网格行结束属性
CSS|网格-行-结束属性原文:https://www.gee ...
[详细]
蜡笔小新 2023-10-17 15:21:56
chrome
网页播放视频的三种实现方式
本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ...
[详细]
蜡笔小新 2023-12-10 13:24:30
chrome
HTML学习02 图像标签的使用和属性
本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ...
[详细]
蜡笔小新 2023-12-13 11:31:26
正则
南邮ctf-web的writeup
本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ...
[详细]
蜡笔小新 2023-12-13 10:58:55
正则
使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ...
[详细]
蜡笔小新 2023-12-12 19:16:21
chrome
深入理解CSS中的margin属性及其应用场景
本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ...
[详细]
蜡笔小新 2023-12-12 18:01:10
chrome
获取关联数组键的列表的方法及浏览器支持
本文介绍了获取关联数组键的列表的方法,即使用Object.keys()函数。同时还提到了该方法在不同浏览器的支持情况,并附上了一个代码片段供读者参考。 ...
[详细]
蜡笔小新 2023-12-11 22:11:22
chrome
开发笔记:使用Junit和黄瓜进行自动化测试步骤缺失
本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ...
[详细]
蜡笔小新 2023-12-11 20:20:32
chrome
编写可保护的代码的重要性及优化方法
本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ...
[详细]
蜡笔小新 2023-12-11 18:32:44
chrome
如何在HTML中获取鼠标的当前位置
本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ...
[详细]
蜡笔小新 2023-12-11 13:04:00
chrome
如何使用Word和Chrome翻译PDF文件
本文介绍了使用Word和Chrome翻译PDF文件的步骤,包括用Word打开PDF、另存为HTML文件以及用Chrome打开HTML并进行翻译的方法。通过这些步骤,您可以方便地将PDF文件翻译成其他语言。详细的操作步骤将在本文中进行说明。 ...
[详细]
蜡笔小新 2023-12-11 09:59:46
正则
ECMA262规定typeof操作符的返回值和instanceof的使用方法
本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ...
[详细]
蜡笔小新 2023-12-10 17:31:51
chrome
使用chrome编辑器实现网页截图功能的方法
本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ...
[详细]
蜡笔小新 2023-12-10 15:50:00
chrome
如何压缩网站页面以减少页面加载时间
本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ...
[详细]
蜡笔小新 2023-12-09 09:17:00
chrome
markdown [软件代理设置]
本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ...
[详细]
蜡笔小新 2023-10-17 18:19:28
提着变形金刚的Oceannk_737
这个家伙很懒,什么也没留下!
Tags | 热门标签
icons
hybrid
dialog
svg
css3
overflow
layout
vue
v8
npm
iframe
postman
ajax
javascript
js
build
textview
jquery
上传
charts
view
webkit
chrome
scheme
cookies
checkbox
chart.js
label
正则
bootstrap
RankList | 热门文章
1
java实现从网络下载多个文件
2
分享Java开发必须掌握的日志分析命令
3
Java volatile的适用场景实例详解
4
Java对称加密算法DES实例详解
5
SpringBoot项目打包发布到外部tomcat(出现各种异常的解决)
6
Java版的7种单例模式写法示例
7
mybatis中查询结果为空时不同返回类型对应返回值问题
8
jenkins和sonar实现代码检测过程详解
9
spring boot 监听容器启动代码实例
10
Java RocketMQ 路由注册与删除的实现
11
Spring实战之Bean的作用域singleton和prototype用法分析
12
使用Cloud Toolkit在IDEA中极速创建dubbo工程
13
Spring Boot2配置服务器访问日志过程解析
14
Spring如何使用注解的方式创建bean
15
Spring Bean初始化及销毁多种实现方式
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有