在php文件中创建javascript代码-SAFARI/CHROME不';行不通

在php文件中创建javascript代码-SAFARI/CHROME不';行不通,php,javascript,google-chrome,safari,include,Php,Javascript,Google Chrome,Safari,Include,我创建了一个.php文件,它可以写出如下的js代码: <? //my_js.php // javascript header header('Content-type: text/javascript'); // Date in the past header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // always modified header('Last-Modified: ' . gmdate('D, d M Y H:i:s') .

我创建了一个.php文件,它可以写出如下的js代码:

<?
//my_js.php
// javascript header
header('Content-type: text/javascript');
// Date in the past
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
// always modified
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
// HTTP/1.1
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
?>
//
// js code here
//
这是一个奇怪的问题,因为当我从Crome/Safari查看源代码时,我可以访问js文件,而且看起来没有错误


我正在为mac使用Chrome 6.04和Safari 5。

可能会设置内容配置:内联;头球

        <?php
     if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false) {
      header("Content-type: text/javascript");
      header("Content-Disposition: inline; filename=\"download.js\"");
      header("Content-Length: ".filesize("my-file.js"));
     } else {
      header("Content-type: application/force-download");
      header("Content-Disposition: attachment; filename=\"download.js\"");
      header("Content-Length: ".filesize("my-file.js"));
     }
     header("Expires: Fri, 01 Jan 2010 05:00:00 GMT");
     if(strstr($_SERVER["HTTP_USER_AGENT"],"MSIE")==false) {
      header("Cache-Control: no-cache");
      header("Pragma: no-cache");
     }
     include("my-file.js

");
?>

这可能是因为它希望文件扩展名为my_js。js。如果是这种情况,请将您的PHP文件保存为my_js.js,然后假设您使用的是Apache,请使用Apache指令:ForceType:

像这样:

<Location /your/path/my_js.js>
      ForceType application/x-httpd-php
</Location>

ForceType应用程序/x-httpd-php

祝你好运

它应该有用。或者您可以更改此选项:

header('Content-type: text/javascript');
对此

header('Content-type: application/javascript');
注:

  • application/javascript:javascript;在RFC 4329中定义,但在IE 8或更早版本中不接受

  • HTML4和HTML5中允许使用text/javascript,与application/javascript不同,它具有跨浏览器支持


请显示完成的呈现HTML。PHP代码在此上下文中毫无意义。请不要使用短的打开标记(
?>
结束标记是否应该创建解析错误?不要介意?>结束标记,这是我的错:)
http://localhost:8888
看起来像是MAMP提供的本地主机服务器。我也用它。它的结构是这样的,因为在使用指定的端口(如80(HTTP))时,您需要输入管理员密码。嗯,如果他提供的内容类型正确,这应该不会是一个问题:期望某个扩展,这将是浏览器端严重的错误行为!我同意,佩卡,但我记得早期版本的Safari(特别是)有这个问题——也许现在仍然有。例如,我经常在错误日志中看到*.js文件工作正常,但它们会抛出一个警告,指出它们是使用错误的头发送的。这表明浏览器更喜欢扩展而不是内容类型。
<Location /your/path/my_js.js>
      ForceType application/x-httpd-php
</Location>
header('Content-type: text/javascript');
header('Content-type: application/javascript');