如何在PHP中动态创建用户脚本?

如何在PHP中动态创建用户脚本?,php,javascript,userscripts,Php,Javascript,Userscripts,我想把一个UserScript分发给很多人,但是我需要动态地(使用PHP)创建我的脚本,因为某些参数会改变 我有一个模板脚本;在这个脚本中,我有两个参数将动态填充,例如,在模板中: var a_parameter = "__tmp_aparam__"; 然后将脚本加载到PHP中,并替换这些参数: $script = file_get_contents('priv/template.js'); $new_script = str_replace('__tmp_aparam__','a_value

我想把一个UserScript分发给很多人,但是我需要动态地(使用PHP)创建我的脚本,因为某些参数会改变

我有一个模板脚本;在这个脚本中,我有两个参数将动态填充,例如,在模板中:

var a_parameter = "__tmp_aparam__";
然后将脚本加载到PHP中,并替换这些参数:

$script = file_get_contents('priv/template.js');
$new_script = str_replace('__tmp_aparam__','a_value',$script);
echo $new_script;
这将创建我想要的脚本,但是,它无法下载。如何让PHP脚本创建一个*.user.js文件,浏览器(如chrome)将自动下载并安装该文件


是否可以设置头属性来执行此操作?

使用
.user.js
为URL添加后缀,并使用mime类型
应用程序/javascript
为文件提供服务

用户脚本管理器通过
.User.js
扩展识别用户脚本

屏幕截图:通过在随机JavaScript文件中添加
.user.js
,触发Greasemonkey的安装:

.user.js后缀“>

在php手册下:

以下人士的评论:

科迪G.01-Aug-2010 09:53

包含以下代码,用于通过使用php标头创建下载:

<?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");
 ?>
应该有您的代码:

$script = file_get_contents('priv/template.js');     
$new_script = str_replace('__tmp_aparam__','a_value',$script);     
echo $new_script; 
并且download.js必须是something.user.js


PS:我现在无法测试这段代码,任何评论都将不胜感激,但如果我更改扩展名,PHP代码将不会执行?@AlexCoplan除非用户确认,否则代码将不会执行。请参阅我随附的屏幕截图,为任意JavaScript文件添加
.user.js
。我不是在谈论js代码,我是在谈论关于PHP代码——除非扩展名是PHP,否则服务器不会执行任何服务器端代码,或者服务器被告知在其他类型的文件中执行PHP代码,但我刚刚意识到我可以重写URL以匹配服务器端的PHP文件,这样就解决了这个问题,我想知道script.PHP?.user.js的工作原理与Rob W的示例abov相同e?@Kato它在Firefox中有,但在Chrome中没有。
$script = file_get_contents('priv/template.js');     
$new_script = str_replace('__tmp_aparam__','a_value',$script);     
echo $new_script;