在进行网页开发时,开发者经常会利用浏览器的“开发者工具”来检查和调试页面结构、样式和脚本。有时,即使是本地创建的简单html文件,在开发者工具中查看时,其<head>标签内也可能出现一段未经作者明确添加的、与flash相关的脚本代码。这段代码通常包含rufflemimetype、ruffleplugin等类定义,并尝试在navigator.plugins和navigator.mimetypes中安装flash相关的mime类型和插件。
以下是可能观察到的脚本示例:
<script>(function(){class RuffleMimeType{constructor(a,b,c){this.type=a,this.description=b,this.suffixes=c}}class RuffleMimeTypeArray{constructor(a){this.__mimetypes=[],this.__named_mimetypes={};for(let b of a)this.install(b)}install(a){let b=this.__mimetypes.length;this.__mimetypes.push(a),this.__named_mimetypes[a.type]=a,this[a.type]=a,this[b]=a}item(a){return this.__mimetypes[a]}namedItem(a){return this.__named_mimetypes[a]}get length(){return this.__mimetypes.length}}class RufflePlugin extends RuffleMimeTypeArray{constructor(a,b,c,d){super(d),this.name=a,this.description=b,this.filename=c}install(a){a.enabledPlugin||(a.enabledPlugin=this),super.install(a)}}class RufflePluginArray{constructor(a){this.__plugins=[],this.__named_plugins={};for(let b of a)this.install(b)}install(a){let b=this.__plugins.length;this.__plugins.push(a),this.__named_plugins[a.name]=a,this[a.name]=a,this[b]=a}item(a){return this.__plugins[a]}namedItem(a){return this.__named_plugins[a]}get length(){return this.__plugins.length}}const FLASH_PLUGIN=new RufflePlugin("Shockwave Flash","Shockwave Flash 32.0 r0","ruffle.js",[new RuffleMimeType("application/futuresplash","Shockwave Flash","spl"),new RuffleMimeType("application/x-shockwave-flash","Shockwave Flash","swf"),new RuffleMimeType("application/x-shockwave-flash2-preview","Shockwave Flash","swf"),new RuffleMimeType("application/vnd.adobe.flash-movie","Shockwave Flash","swf")]);function install_plugin(a){navigator.plugins.install||Object.defineProperty(navigator,"plugins",{value:new RufflePluginArray(navigator.plugins),writable:!1}),navigator.plugins.install(a),0<a.length&&!navigator.mimeTypes.install&&Object.defineProperty(navigator,"mimeTypes",{value:new RuffleMimeTypeArray(navigator.mimeTypes),writable:!1});for(var b=0;b<a.length;b+=1)navigator.mimeTypes.install(a[b])}install_plugin(FLASH_PLUGIN);})();</script>
这段看似“奇怪”的代码实际上来源于一个名为 Ruffle 的开源项目。Ruffle是一个用Rust语言编写的Flash Player模拟器,它能够将SWF文件编译成WebAssembly,从而在现代Web浏览器中安全地运行Flash内容。鉴于Adobe Flash Player已于2020年底停止支持,Ruffle的出现为那些仍需访问或保留旧Flash内容的网站和用户提供了一个重要的解决方案。
Ruffle脚本注入的主要目的是在浏览器环境中模拟Flash插件的存在。它通过修改navigator.plugins和navigator.mimeTypes对象,让浏览器“认为”Flash插件仍然可用,从而尝试加载并运行Flash动画或应用程序。
当开发者在自己的HTML文件中没有明确引入Ruffle时,这种脚本的出现通常有以下几种原因:
立即学习“前端免费学习笔记(深入)”;
在浏览器开发者工具中看到类似Ruffle的Flash模拟器脚本注入,通常是由于您安装的某个浏览器扩展程序所致。这段代码的目的是在现代浏览器中重新激活对Flash内容的支持。
注意事项:
总而言之,Ruffle脚本的出现是现代浏览器为了兼容历史遗留的Flash内容而采取的一种技术手段,通常由浏览器扩展程序驱动,对正常的网页开发和浏览体验影响甚微。
以上就是网页开发工具中HTML头部异常脚本注入解析:Ruffle库的作用与来源的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号