Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确处理Silverlight的弃用?_Javascript_Google Chrome_Silverlight_Cross Browser_Npapi - Fatal编程技术网

Javascript 如何正确处理Silverlight的弃用?

Javascript 如何正确处理Silverlight的弃用?,javascript,google-chrome,silverlight,cross-browser,npapi,Javascript,Google Chrome,Silverlight,Cross Browser,Npapi,最近,这意味着没有Silverlight。现在,我已经学会了如何成为一名优秀的web开发人员,我更喜欢功能检测而不是浏览器检测,以提供良好的用户体验。不幸的是,NPAPI不能正确地支持特征检测 我已经为我们的Silverlight工具构建了一个JavaScript替代品。我首先检查用户是否使用IE9或更旧版本,这是一种可靠的方法(如果我错了,请纠正我)。如果是那样的话,我会给他们提供Silverlight工具。其他浏览器被认为支持所有必要的功能(在本例中,我们只针对桌面浏览器),因此,新的JS工

最近,这意味着没有Silverlight。现在,我已经学会了如何成为一名优秀的web开发人员,我更喜欢功能检测而不是浏览器检测,以提供良好的用户体验。不幸的是,NPAPI不能正确地支持特征检测

我已经为我们的Silverlight工具构建了一个JavaScript替代品。我首先检查用户是否使用IE9或更旧版本,这是一种可靠的方法(如果我错了,请纠正我)。如果是那样的话,我会给他们提供Silverlight工具。其他浏览器被认为支持所有必要的功能(在本例中,我们只针对桌面浏览器),因此,新的JS工具为它们提供服务

经过测试,IE10和IE11速度太慢,无法很好地处理我们的应用程序。具体而言,一些I/O操作(和)的速度大约慢10-15倍。我想我会提供所有版本的IE Silverlight工具,但是


我累坏了。看来我不得不求助于不可靠的浏览器检测。我唯一的选择似乎是,但这似乎也不可靠。因此,我求助于美国的善良人民;怎么办?

很遗憾没有人有更好的建议。最后,我能够为我们的Silverlight控件编写一个纯JavaScript替代品。由于IE10和IE11的I/O操作性能仍然很差,因此我决定检测它们,以返回Silverlight控件

<!--[if IE]>
    <script type="text/javascript">
        window.is_ie = true;
    </script>
<![endif]-->
<script type="text/javascript">
    function isIE(ua) {
        if (ua.indexOf('MSIE ') > -1)
            return true;

        if (ua.indexOf('Trident/') > -1)
            return true;

        return false;
    }
    if(!window.is_ie) {
        window.is_ie = isIE(window.navigator.userAgent);
    }
</script>

功能isIE(ua){
如果(ua.indexOf('MSIE')>-1)
返回true;
如果(ua.indexOf('Trident/')>-1)
返回true;
返回false;
}
如果(!window.is_ie){
window.is_ie=isIE(window.navigator.userAgent);
}

如果您可以通过检测IE10和IE11来避免问题,您可以查看navigator.userAgent,它为您提供了一个用户代理字符串。浏览器检测?我不能假设我现在可以为它编写的代码在一年左右的时间里还能继续工作。所以这对我来说不是一个真正的选择。(我的问题不是已经很清楚了吗?)?但这只适用于Chrome。Silverlight仅适用于IE。您如何处理Firefox和Safari?Java可以在大多数浏览器中编写插件,因此这可能是一个跨浏览器的解决方案。但是您的用户必须允许JRE在他们的浏览器进程中运行,这比它应该的要困难得多(考虑常见的it策略)。我通过在服务器上运行DICOM解析工具并使用服务创建一个更干净的API来解决这个问题,但不确定这是否有助于您。