2012-03-16 3 views
1

많은 사람들에게 UserScript를 배포하고 싶습니다.하지만 특정 매개 변수가 변경 될 때 PHP를 사용하여 동적으로 스크립트를 만들어야합니다.동적으로 PHP로 UserScript를 만드는 방법은 무엇입니까?

템플릿 스크립트가 있습니다. 이 스크립트에서 나는 템플릿, 예를 들어, 실시간으로 채워집니다 매개 변수의 몇 가지있다 : 다음 PHP로 스크립트를로드

var a_parameter = "__tmp_aparam__"; 

, 그 paramters 대체 :

$script = file_get_contents('priv/template.js'); 
$new_script = str_replace('__tmp_aparam__','a_value',$script); 
echo $new_script; 

이렇게하면 원하는대로 스크립트를 만들 수 있지만 다운로드 할 수는 없습니다. PHP 스크립트가 브라우저와 같은 * .user.js 파일을 만들고 (예 : 크롬) 자동으로 다운로드하여 설치하게하려면 어떻게해야합니까?

이렇게 설정할 수있는 헤더 속성이 있습니까?

답변

2

URL을 .user.js으로 지정하고 mime-type application/javascript을 사용하여 제공하십시오.

사용자 스크립트 관리자는 .user.js 확장자를 통해 사용자 스크립트를 인식합니다.

스크린 샷 : .user.js에 임의의 자바 스크립트 파일을 부기 그리스 몽키의 설치를 트리거 :

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

코멘트에 의해 :

코디 G

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

+0

입니다.하지만 확장 코드를 변경하면 PHP 코드가 실행되지 않습니까? –

+0

oh wait ...'mod_rewrite' :) –

+0

@AlexCoplan 사용자가 확인하지 않으면 코드가 실행되지 않습니다. 임의의 자바 스크립트 파일에'.user.js '라는 접미사가 붙어있는 나의 스크린 샷을 보라. –

0

PHP 매뉴얼에서 .01-Aug-2010 09:53

나는 다음과 같은 명령을 대신 추측

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

:

PHP는 헤더로 재생하여 다운로드를 만들기위한 다음 코드를 포함

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 여야합니다.

추신 : 지금이 코드를 테스트 할 수 없습니다. 의견은

관련 문제