使用js/jquery检测flash播放器的现代或非弃用方式?

Joe*_*etR 5 javascript browser flash jquery

首先,抱歉在这里重新提出这个问题.我已经尝试了两天如何使用javascript/jquery来完成这项工作,我想我已经阅读了所有堆栈溢出和其他博客相关的帖子,所以请不要将其标记为重复,因为我无法使用从2012年到2017年的过时脚本.

我有一个页面重定向到第三方电子学习平台,其中一些内容需要闪存才能工作.许多用户不关心他们的机器上安装了哪些软件(多么新的,呵呵)所以我需要检测它并显示典型消息"请安装/更新flash player点击这里",但我找不到"现代"脚本/方式,在任何地方,如果可能的话,简化.

我尝试过的所有脚本都已弃用,或者在所有浏览器中都返回false,即使我安装了最新版本的Flash并处于活动状态.

Anny帮助将不胜感激(除了链接到现在不起作用的旧帖子或脚本,显然).

非常感谢!

Nik*_*hak 5

有一种检查Flash的简单方法,因为所有已安装和启用的插件都将列在navigator.plugins;

请注意,如果已安装但未启用插件,则不会在navigator.plugins阵列中检测到该插件。有方法来检测这种使用Javascript(这个问题这证实了相同的)。

话虽如此,使用以下功能isFlashEnabled();检测Flash:

<html>

<script>

if(isFlashEnabled()) 
{ document.write('Flash is installed (but may need to be enabled)'); } 
else { document.write('Flash is either not installed or disabled'); }

function isFlashEnabled() 
{
    var flash = navigator.plugins.namedItem('Shockwave Flash');
    if (!flash) { return 0; } 
    else { return 1; }
}

</script>

<body> <embed src="https://www.w3schools.com/tags/helloworld.swf"> </body>

</html>
Run Code Online (Sandbox Code Playgroud)


opp*_*opp 0

您可以获得一个包含浏览器所有已安装插件的数组,如下所示:

var plugins = navigator.plugins;
Run Code Online (Sandbox Code Playgroud)

然后您可以检查该数组是否包含 flash 插件。

来自https://developer.mozilla.org/de/docs/Web/API/NavigatorPlugins/plugins

function getFlashVersion() {
   var flash = navigator.plugins.namedItem('Shockwave Flash');
   if (typeof flash != 'object') {
      // flash is not present
      return undefined;
   }
   if(flash.version){ 
     return flash.version;
   } else {
     //No version property (e.g. in Chrome)
     return flash.description.replace(/Shockwave Flash /,"");
  }
}
Run Code Online (Sandbox Code Playgroud)