需求:系统要求用户设置信任站点,否则会出现一些莫名其妙的故障(这个和系统使用ActiveX控件有关,也和运行的网络环境的域策略有关)
以下整理自[1][2]:
实现原理:
信任站点的安全级别较低,默认可以使用未标记为安全的ActiveX(包括客户端OCX应用), 你的网站一定是使用了一个不安全的activeX,所以只能在信任站点使用。所以,你只需用JAVASCRIPT检测一下页面的activeX是否被加载和运行,如果正常,即表明加入信任站点,否则,就不是,给用户弹出提示即可。
你也可以通过try catch来捕捉脚本的错误,如果能捕捉到错误,即表明用户未把此站点加入信任站点。
或者在客户端调用WScript.Shell检查注册表,查看是否加为信任站点,可惜这种办法往往不行,因为WScript.Shell组件一般都会被浏览器所禁止的。
-------------------------------
如果是第一次运行脚本的话IE会有一个自己的提示:“在此页面上的 ActiveX 控件和本页上的其他部分的交互可能不安全。你想允许这种交互吗?”然后才能走进catch块,执行我自己的代码。我不想要IE的提示,有可以解决的办法吗?
解决方案很简单,是先使用WINDOWS系统自带的不安全的ACTIVEX来进行测试,因为系统自带的AXTIVEX不需要安装,所以不会出现你所说的提示。如使用FSO对象来进行测试,测试通过后,再使用你自己的ACTIVEX。
-------------------------------
例子代码如下:
<script type="text/javascript">
function LoadActiveX() {
try {
var fso = new ActiveXObject( " Scripting.FileSystemObject " );
} catch (e) {
alert('未将本站点添加到信任站点!' );
return ;
}
// 在这里写加载你自己ACTIVEX的代码 '未将本站点添加到信任站点!'
}
LoadActiveX();
< / script>
实现代码:
< script type="text/javascript" >
function _exec(command) {
window.oldOnError = window.onerror;
window._command = command;
window.onerror = function (err) {
if (err.indexOf( ' utomation') != -1) {
alert( ' 未将本站点添加到信任站点!');
//window.location.href = " 提示页面.htm " ; // 转到提示页面
// return true ;
} // else {
//window.location.href = " 站点首页.htm "; // 转到站点首页
//}
};
var wsh = new ActiveXObject( ' WScript.Shell');
/*
if (wsh) {
if(command)
wsh.Run(command);
}
*/
window.onerror = window.oldOnError;
}
_exec( " mspaint.exe " )
</ script >
附录WScript脚本设置信任站点:
< SCRIPT LANGUAGE = " JavaScript " >
< ! --
var WshShell = new ActiveXObject( " WScript.Shell " );
WshShell.RegWrite( " HKCU\\Software\\Microsoft\\Windows\\CurrentVe
rsion \\ Internet Settings \\ ZoneMap \\ Domains \\ 21hb.com " , " " );
WshShell.RegWrite( " HKCU\\Software\\Microsoft\\Windows\\CurrentVe
rsion \\ Internet Settings \\ ZoneMap \\ Domains \\ 21hb.com \\ www " , " " );
WshShell.RegWrite( " HKCU\\Software\\Microsoft\\Windows\\CurrentVe
rsion \\ Internet
Settings \\ ZoneMap \\ Domains \\ 21hb.com \\ www \\ http " , " 2 " , " REG_DWORD "
);
alert( " 写入成功 " );
//-->
</ SCRIPT >
参考文档:
http://topic.csdn.net/t/20050117/16/3732394.html
http://zhidao.baidu.com/question/72484414