在php文件中创建javascript代码 - SAFARI / CHROME不起作用

时间:2010-09-06 19:21:03

标签: 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') . ' 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
//

然后我将上面的脚本包含在我的index.php文件中,如下所示:

<script type="text/javascript" src="my_js.php?id=<? echo $id ?>">
</script>

这在Firefox中很完美,但SAFARI和CHROME根本不包含my_js.php文件!

我做错了什么?

**编辑:

这是index.php中的渲染html:

<script type="text/javascript" src="my_js.php?id=new"></script> 

这是my_js.php代码: (这是一个非常大的文件,所以我只写出前几行)

var g = { sitepath: "myNullUrl" }

function getBrowserWidth(){
if (window.innerWidth){
    return window.innerWidth;}  
else if (document.documentElement && document.documentElement.clientWidth != 0){
    return document.documentElement.clientWidth;    }
else if (document.body){return document.body.clientWidth;}      
    return 0;
}

这是一个奇怪的问题'我正在查看来自Crome / Safari的源代码我可以访问js文件,它似乎没有错误!

我正在使用Chrome 6.04和Safari 5,两者都适用于Mac。

3 个答案:

答案 0 :(得分:0)

也许设置Content-Disposition:inline;头?

        <?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

");
?>

答案 1 :(得分:0)

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

像这样:

<Location /your/path/my_js.js>
      ForceType application/x-httpd-php
</Location>
祝你好运!

答案 2 :(得分:0)

它应该工作。或者你可以改变这个:

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

到这个

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

注意:

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

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