'无法识别浏览器类型'使用Internet Explorer 11时显示的消息

时间:2015-04-08 10:05:11

标签: java internet-explorer

我编写了一个java代码来更新软件并查看更新状态。 我已经在eclipse中编写了代码,我想使用GUI更新软件。 在GUI中有一个链接点击,我们可以看到更新状态。 Internet Explorer 11是默认浏览器。但是,单击该链接时会出现名为

的错误消息

"无法识别浏览器类型"显示消息。

这是我的java代码:

    protected static void retrieveIAInfo() {

    String appString = readDefaultBrowserCommand();

    // XTSce63590: manage Mozilla and Firefox 

    // commandline in the registry

    if (isIE(appString)) {

    m_DefaultBrowserPath = extractIECmd(appString);

    } else if (isMozilla(appString)) {

    m_DefaultBrowserPath = extractMozillaCmd(appString);

    } else if (isFireFox(appString)) {

    m_DefaultBrowserPath = extractMozillaCmd(appString);          

    } else {

    throw new RegistryUtilitiesException("Unable to identify browser     

    type.",RegistryUtilitiesException.NO_BROWSER);

    }

    if (m_DefaultBrowserPath== null) {

    throw new RegistryUtilitiesException("Unable to identify brwoser     

    type.",RegistryUtilitiesException.NO_BROWSER);        

    }

    System.out.println("IABrowserPath: " + m_DefaultBrowserPath);

    }

    protected static String extractIECmd(String cmd) {

    String browser_cmd = null;

    //int index = cmd.toLowerCase().lastIndexOf ("-nohome");

    int index = cmd.toLowerCase().lastIndexOf ("-url");

    if (index != -1) {

    cmd = cmd.substring(0, index);

    // if (cmd.charAt(0) == '"') {

    //  index = cmd.toLowerCase().lastIndexOf ("\"");

    if (cmd.charAt(0) == '"') {

    index = cmd.toLowerCase().lastIndexOf ("%1"); 

    if (index != -1) {

    browser_cmd = cmd.substring(1, index);

    }

    }

    }

    return browser_cmd;

    }

在函数retrieveIAInfo中,当调用extractIECmd(appString)时,函数总是返回false。因此throw命令 "无法识别浏览器类型" 在retrieveIAInfo中正在执行。 对于像Mozilla这样的其他浏览器,没有任何问题。仅在Iinternet Explorer 11浏览器的情况下,抛出异常。

cmd从以下寄存器值中提取索引:

" C:\ Program Files \ Internet Explorer \ iexplore.exe"%1

有人可以帮我把%1的值作为函数extractIECmd中的lastIndexOf变量

1 个答案:

答案 0 :(得分:0)

我已经提到除了Internet Explorer 11之外的浏览器都运行良好。 要解决此问题,我们必须提取Internet Explorer 11的寄存器值 " C:\ Program Files \ Internet Explorer \ iexplore.exe \"%1"

消除%1并获取C:\ Program Files \ Internet Explorer \ iexplore.exe

这可以通过更改" extractIECmd()'来完成。作为

protected static String extractIECmd(String qq){

  String browser_cmd = "";

  *int index = qq.toString().lastIndexOf ("");*
  if (index != -1) {
      qq = qq.substring(0, index);

     if (qq.charAt(0) == '"') {
         index = qq.toLowerCase().lastIndexOf ("\""); 
          if (index != -1) {
              browser_cmd = qq.substring(1, index);


          }
      }
  }
  return browser_cmd;

}

现在Internet Explorer也正常运行 问题解决了