создать код JavaScript в файле php - SAFARI / CHROME не работает - PullRequest
0 голосов
/ 06 сентября 2010

Я создал файл .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!

Что я делаю не так?

** edit:

это отрендеренный html в index.php:

<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 и Safari5, оба для Mac.

Ответы [ 3 ]

0 голосов
/ 06 сентября 2010

Это может быть, потому что он ожидает, что расширение файла будет my_js. js .Если это так, сохраните ваш PHP-файл как my_js.js, затем, если вы используете Apache, используйте директиву Apache: ForceType:

Примерно так:

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

Хорошоудачи!

0 голосов
/ 07 сентября 2010

должно работать. Или вы можете изменить это:

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

к этому

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

Примечание:

  • приложение / javascript: JavaScript; Определено в RFC 4329, но не принято в IE 8 или более ранней версии

  • text / javascript разрешен в HTML 4 и 5 и, в отличие от application / javascript, поддерживает разные браузеры

0 голосов
/ 06 сентября 2010

Может быть установлен 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

");
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...