如何在PHP中动态创建UserScript?

时间:2012-03-16 16:19:14

标签: 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',$script);
echo $new_script;

这将创建我想要的脚本,但是,它不可下载。如何让PHP脚本创建一个* .user.js文件,哪些浏览器(如chrome)会自动下载并安装?

我可以设置标题属性来执行此操作吗?

2 个答案:

答案 0 :(得分:2)

使用.user.js后缀网址,并使用mime-type application/javascript投放该文件。

用户脚本管理员通过.user.js扩展名识别用户脚本。

屏幕截图:通过使用.user.js后缀随机JavaScript文件来触发Greasemonkey的安装:

Screenshot showing Greasemonkey getting triggered by a random JS file with an appended <code>.user.js</code> suffix

答案 1 :(得分:0)

在php手册下:

http://php.net/manual/en/function.header.php

评论:

Cody G.01-Aug-2010 09:53

包括以下用于通过使用php header创建下载的代码:

<?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");
 ?>

我想而不是以下命令:

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:我现在无法测试此代码,任何评论都将不胜感激