为什么当一个客户站点在所有其他站点都可用时,navigate()为什么会失败?

时间:2019-06-28 14:02:58

标签: javascript html

我们有一个使用WebBrowser控件向用户显示信息的C ++应用程序。该应用程序,HMTL屏幕和屏幕使用的Javascript文件非常相似,但不一定对所有客户都相同。这是我们的用户看到的first screen。每个矩形都是由Javascript函数动态创建的HTML元素。当用户双击一个矩形时,将出现一个包含有关所选基准的详细信息的屏幕。这对我们所有的客户都起作用了很多年,但是对我们的新客户却无效。它可以在我的计算机上使用与客户相同的屏幕和数据库运行。在我们新客户的站点上,当用户双击基本框时,C ++应用程序崩溃。

当用户双击一个矩形时,将调用BaseUpdate_Click()方法。在这里:

    function BaseDisplay_Click() {
        var BaseId;

        //var NewString;

        //NewString = LanguageCtrl.TranslateString("lbs");
        alert("BaseDisplay_Click");

        BaseId = window.event.srcElement.BaseId;
      alert("Trying to display base " + BaseId);
        if (BaseId == undefined) 
      {       
        BaseId = window.event.srcElement.parentElement.BaseId;
        alert ("BaseId was unknown.  Now it is " + BaseId);
      }

        WriteCookie("leavebaseupdate", 1); 
        WriteCookie("base", BaseId);
        WriteCookie("currentview", CurrentView);
        WriteCookie("myarea", MyArea);
        WriteCookie("mystatus", MyStatus);
        WriteCookie("statusvalue", StatusValue);
        WriteCookie("OverviewView", CurrentView);
        alert("About to navigate to baseupdate.htm");
      try
      {
              navigate("BaseUpdate.htm");
      }
      catch (e)
      {
        alert ("Failed to navigate to baseupdate.htm: " + e.message);
      }
    }

“关于导航到baseupdate.htm”消息按预期出现,但是C ++应用程序崩溃。我添加了异常处理程序以尝试查看发生了什么,但是该处理程序从未执行。

我尝试将“ baseupdate.htm”更改为“ ThisDoesNotExist.htm”,并得到相同的行为。我尝试使用baseupdatehtm的完整路径,但仍然出现相同的行为。我注释掉了对navigation()的调用,以验证问题出在屏幕之一而不是C ++应用程序中。正如预期的那样,C ++应用程序继续运行。

对于我来说,可以向动态生成的基本元素中添加一个元素来替换对navigation()的调用。如果这样做,是否仍会执行调用BaseDisplay_Click()的双击处理程序来编写baseupdate.htm需要的cookie?如果没有,将这些值传递给baseupdate.htm的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

该问题与HTML或Javascript无关。我导航到的页面使用了尚未注册的ActiveX控件。