如何制作仅可在Internet Explorer 11中正常运行的专属网站?
仅IE11可访问网站实现方案(无额外组件、无需UA检测)
以下方案全部基于IE11独有、现代浏览器完全不兼容的原生特性,组合使用可最大程度避免被绕过,且完全适配Win10自带默认IE11环境:
1. CSS层面拦截
仅IE10/11支持-ms-high-contrast相关的媒体查询规则,你可以默认隐藏所有核心页面内容,仅匹配到该规则时才显示:
/* 默认所有核心内容隐藏 */ .core-content { display: none; } /* 仅IE10/11能命中该规则,显示内容 */ @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .core-content { display: block; } }
还可以搭配IE独有的behavior属性绑定HTC逻辑,只有IE会执行该属性指向的内容渲染逻辑,现代浏览器完全忽略该属性。
2. JavaScript层面校验
独有属性检测
只有IE内核存在document.documentMode属性,IE11下该属性固定返回11,该属性无法通过篡改UA伪造,可靠性远高于UA检测:
// 非IE11环境直接清空页面,替换为提示 if (!document.documentMode || document.documentMode !== 11) { document.body.innerHTML = '<div>本站仅支持Internet Explorer 11访问</div>'; throw new Error('不支持的浏览器环境'); } // 核心业务逻辑全部放在该判断分支之后
还可以搭配其他IE独有API做多重校验,比如MSCSSMatrix构造函数、msSetImmediate方法等,只要任意一项检测不通过就终止页面渲染。
VBScript逻辑嵌入
VBScript是IE专属脚本语言,现代浏览器完全不解析执行该类脚本,你可以把核心DOM生成、业务逻辑全部用VBScript实现,只有IE能正常运行代码输出页面内容:
<script type="text/vbscript"> ' 仅IE会执行这段VBScript代码,动态生成页面核心内容 Document.Write("<div class='core-content'>彩蛋内容</div>") </script>
3. HTML层面特性利用
可以使用IE独有的XML数据岛标签存储核心页面内容,现代浏览器会将<xml>标签识别为普通未知标签,无法正确读取内部数据,只有IE可以正常解析读取数据岛内容用于渲染:
<xml id="coreData"> <content>这里是只有IE能读取到的彩蛋内容</content> </xml>
后续仅在IE环境下读取coreData标签内的内容渲染到页面即可。
内容的提问来源于stack exchange,提问作者user9564371
相关产品推荐
相关产品推荐

