2016-08-09 150 views
1

我遇到了Eclipse SWT浏览器在一台机器上没有加载某些样式的问题。我期待机器使用IE 10作为本地浏览器,但我不确定我如何确认这一点。有没有办法确定SWT决定加载页面的浏览器的类型/版本?查找浏览器的SWT浏览器的类型/版本

回答

0

基础上接受了这个问题的答案:

How can you detect the version of a browser?

你可以做这样的事情:在我的情况

public static void main(String[] args) 
{ 
    final Display display = new Display(); 
    final Shell shell = new Shell(display); 
    shell.setText("Stackoverflow"); 
    shell.setLayout(new FillLayout()); 

    Browser browser = new Browser(shell, SWT.NONE); 

    browser.addProgressListener(new ProgressListener() 
    { 
     @Override 
     public void changed(ProgressEvent progressEvent) 
     { 
     } 

     @Override 
     public void completed(ProgressEvent progressEvent) 
     { 
      System.out.println(browser.evaluate("var ua = navigator.userAgent, tem, M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || []; if (/trident/i.test(M[1])) { tem = /\\brv[ :]+(\\d+)/g.exec(ua) || []; return 'IE ' + (tem[1] || ''); } if (M[1] === 'Chrome') { tem = ua.match(/\\b(OPR|Edge)\\/(\\d+)/); if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera'); } M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?']; if ((tem = ua.match(/version\\/(\\d+)/i)) != null) M.splice(1, 1, tem[1]); return M.join(' ');")); 
     } 
    }); 
    browser.setUrl("https://www.google.co.uk"); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
      display.sleep(); 
    } 
    display.dispose(); 
} 

它输出IE 11

+0

谢谢!这正是我正在寻找的。现在我发现这些机器都通过SWT,IE 7加载了相同的浏览器版本。所以现在我很困惑,为什么在一台机器上运行相同浏览器的SWT会错误地显示某些样式,但在另一台机器上一切正常显示。奇怪的。我也尝试重置该机器的Internet Explorer设置,但没有任何更改。 –