需求:系统要求用户设置信任站点,否则会出现一些莫名其妙的故障(这个和系统使用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

------------------------------- 
如果是第一次运行脚本的话IE会有一个自己的提示:“在此页面上的 ActiveX 控件和本页上的其他部分的交互可能不安全。你想允许这种交互吗?”然后才能走进catch块,执行我自己的代码。我不想要IE的提示,有可以解决的办法吗?

解决方案很简单,是先使用WINDOWS系统自带的不安全的ACTIVEX来进行测试,因为系统自带的AXTIVEX不需要安装,所以不会出现你所说的提示。如使用FSO对象来进行测试,测试通过后,再使用你自己的ACTIVEX。
例子代码如下:
<script>
function LoadActiveX()
{
try
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
}
catch(e)
{
alert("未加入可信站点。");
return;
}

//在这里写加载你自己ACTIVEX的代码
}
LoadActiveX();
</script>

相关文章:

  • 2021-10-21
  • 2021-07-12
  • 2021-11-15
  • 2021-12-25
  • 2022-12-23
  • 2021-09-08
  • 2021-07-19
  • 2021-11-18
猜你喜欢
  • 2021-09-06
  • 2021-07-25
  • 2021-12-25
  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案