2014-01-15 85 views
3

我注意到我无法在Web IE 11上启动..我知道IE11的useragent是Trident而不是MSIE。所以我想,为什么我得到总是通知安装Java甚至已安装的Java的原因..但我无法找到暂时的解决方案,因为大家解决这个问题,通过更新deployJava.js for webstart和添加“三叉戟”与“msie” ...JavaFx网络不能与Internet Explorer 11与JRE7

只是注意,只能在Windows 7可以安装IE11或它与Windows捆绑8.1 ..你无法安装IE11或将其更新到IE11在Windows 8

一次简要我的问题是:

1-其中JavaFX应用程序检测浏览器代理?

2-是否有可能修改包是负责,并包括jar项目?

任何想法欢迎..

回答

2

的Internet Explorer 11不是supported configuration for JavaFX in JRE 7

您可以通过filing a feature request in the JavaFX issue tracker申请对Internet Explorer 11的支持。您可以在功能请求中链接回这个问题。

我想你的问题在于,微软在UserAgent string for IE11 has changed from previous versions中的位置和understand the UserAgent string encoded information的方式在IE11中与之前的浏览器版本相比有所变化。这些更改意味着当前的JavaFX部署代码无法正确检测到它正在IE11环境中运行,并执行适当的操作以使JavaFX应用程序能够在IE11中执行。

我相信JavaFX打包代码使用dtjava.js脚本来检测目标浏览器。对于JavaFX 8,这个检测程序是(我相信)JavaScript detectEnv()方法。为获得IE11兼容性,您可能需要做的事情是托管您自己的部署脚本,并将您本地部署脚本中的dtjava.js替换为您创建的与IE 11兼容的修改版本(详细说明如何在外部执行此操作这个答案的范围)。即使您确实使用dtjava.js脚本来正确识别和执行IE 11的逻辑,但在IE 11中仍可能存在运行JavaFX的其他问题(因为它目前不是受支持的部署平台)。

+0

谢谢..我会检查并让你知道.. –

2

我已经取得了一些dtjava.js修改和得到它在IE11

工作对我来说,我使用dtjava.js只嵌入不是基于JavaFX的小程序,所以可能这些修改不足以使JavaFX应用程序运行。

我改变IE检测规则从

ie = isDef(window.execScript); 

ie = /trident/.test(u); 

detectEnv()

if (isDef(d.addEventListener)) { 
    d.addEventListener("DOMContentLoaded", 
    invokeCallbacks, false); 
} 
if (ua.ie && ua.win) { 

if (isDef(d.addEventListener)) { 
    d.addEventListener("DOMContentLoaded", 
    invokeCallbacks, false); 
} 
else if (isDef(d.attachEvent)) { 

in init() function。

当然,这些都是未经过严格测试的hacky更改(只有Explorer 10,11和最新的FIrefox和Chrome)。请按照您自己的风险...

+0

正如你所说的它的小程序不是JavaFX ..但感谢您与我们分享您的解决方案... –