如何在PHP中动态创建用户脚本?
我想把一个UserScript分发给很多人,但是我需要动态地(使用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
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;