我们有一个旧页面。最近谷歌浏览器(和其他最新版本的浏览器)停止显示菜单,但是如果我点击"刷新",则检查工具会显示以下错误:
资源解释为脚本,但使用 MIME 类型传输 text/html: ".../menu.js.php"
这个问题的解决方案是什么,或者问题实际上在其他地方?
这是因为服务器未正确设置标头内容类型:
Content-Type: application/javascript
为了澄清,您的服务器应在响应上设置正确的 http 标头以反映内容类型。
我想在你的页面中,你有一个带有type="text/javascript"的脚本标签,但Chrome说服务器没有将内容识别为javascript。
因为Javascript文件实际上是PHP文件,服务器将文件传输为text/html。我自己没有发现这一点。我从SCRIPTONITE的回答中获取了它
要在 PHP 中设置标头,可以使用 header()
函数。应始终尽早设置标头以避免错误。仅当您尚未向输出发送任何内容时,您才能设置标头。没有回声,不是HTML,什么都没有。从手册:
请记住,在发送任何实际输出之前,必须调用 header(),无论是通过普通的 HTML 标记、文件中的空行还是从 PHP 发送。
要设置 Javascript 文件的标头,请使用以下行:
header("Content-Type: application/javascript");
Content-Type
这不是问题。
问题出在别处。我看到的一个问题是花式盒子:
1.9 版的 jQuery 删除了大多数(如果不是全部)折旧方法。
$.browser就是其中之一。Fancybox 依赖于 $.browser,因此如果不安装 migrate 插件,则无法使用 jQuery 1.9 或 maior 以及您的 fancybox 版本。
您可以将 jQuery 降级到版本 1.9