値の書き換えが必要な関数パラメータは、次の 4 つのカテゴリに分類されます。
<Function name="functionName " paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source="*"]/>
各表記の意味は次のとおりです。
name は JavaScript 関数の名前です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。
type はこのパラメータが必要とする値の種類を指定します (省略可能、デフォルトは EXPRESSION タイプ)。
source はページのソース URI です (省略可能、デフォルト * は任意のページを意味する)。
関数は、このパラメータを文字列としてとり、この文字列は URL として扱うことができます。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y,," type="URL" [source="*"]/>
各表記の意味は次のとおりです。
name は、パラメータのタイプが URL である関数の名前です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。
type は関数のタイプです (必須、値は URL である必要がある)。
source は、この関数の呼び出しが含まれるページの URL です (省略可能、デフォルト * は任意の URL を意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html
ページコンテンツ
<script language="JavaScript"> <!-- function test(one,two,three){ alert(one + "##" + two + "##" +three); } test("/test.html","../test.html","123"); window.open("/index.html","gen",width=500,height=500); //--> </SCRIPT>
ルール
<Function name="URL" name="test" paramPatterns="y,y,"/> <Function name="URL" name="window.open" paramPatterns="y,,,"/>
出力
<SCRIPT language="JavaScript"> <!-- function test(one,two,three) { alert(one + "##" + two + "##" +three); } test("gateway-URL/http://abc.sesta.com/test.html"," gateway-URL/http://abc.sesta.com/test/rewriter/ test1/jscript/test.html","123");window.open("gateway-URL/ http://abc.sesta.com/index.html","gen",width=500,height=500); //--> </SCRIPT>
説明
最初のルールは、関数 test の最初の 2 つのパラメータを書き換える必要があることを示します。したがって、test 関数の最初の 2 つのパラメータが書き換えられます。2 番目のルールは、window.open 関数の最初のパラメータを書き換える必要があることを示します。window.open 関数内の URL の先頭に、ゲートウェイ URL と、関数パラメータが含まれるページのベース URL が追加されます。
このパラメータは、値として式をとり、この式の評価結果が URL となります。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source="*"]/>
各表記の意味は次のとおりです。
name は関数名です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
type は、式の値のタイプを指定します (省略可能)。
source は、この関数を呼び出すページの URI です。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/dir1/dir2/page.html
ページコンテンツ
<script language="JavaScript"> <!-- function jstest2(){ return ".html"; } function jstest1(one){ return one; } var dir="/images/test" var test1=jstest1(dir+"/test"+jstest2()); document.write("<a HREF="+test1+">TEST</a>"); alert(test1); //--> </SCRIPT>
ルール
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/> または <Function name="jstest1" paramPatterns="y"/>
出力
<script language="JavaScript"> <!-- function jstest2(){ return ".html"; } function jstest1(one){ return one; } var dir="/images/test" var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2())); document.write("<a HREF="+test1+">TEST</a>"); alert(test1); //--> </SCRIPT>
説明
このルールは、これが EXPRESSION 関数のパラメータであると見なすことによって、jstest1 関数の最初のパラメータを書き換える必要があることを示します。ページコンテンツの例では、最初のパラメータは実行時にだけ評価される式です。リライタはこの式の先頭に psSRAPRewriter_convert_expression 関数を追加します。式が評価され、psSRAPRewriter_convert_expression 関数は実行時に出力を書き換えます。
上の例では、JavaScript 変数ルールの一部として、変数 test1 は必要ありません。書き換えは、jstest1 の関数ルールによって行われます。
これは、値が HTML の関数パラメータです。
HTML ページをダイナミックに生成する document.write() などのネイティブ JavaScript メソッドは、このカテゴリに分類されます。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" type="DHTML" [source="*"]/>
各表記の意味は次のとおりです。
name は関数名です。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
ページのベース URL が次の URL であると仮定します。
http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html
ページコンテンツ
<script> <!-- document.write(\q<a href="/index.html">write</a><BR>\q) document.writeln(\q<a href="index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT>
ルール
<Function name="DHTML" name="document.write" paramPatterns="y"/> <Function name="DHTML" name="document.writeln" paramPatterns="y"/> <Attribute name="href"/>
出力
<SCRIPT> <!-- document.write(\q<a href="gateway-URL/ http://xyz.siroe.com/index.html">write</a><BR>\q) document.writeln(\q<a href="gateway-URL/ http://xyz.siroe.com/test/rewriter/test1/ jscript/JSFUNC/index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT>
説明
最初のルールは、関数 document.write の最初のパラメータを書き換える必要があることを示します。2 番目のルールは、関数 document.writeln の最初のパラメータを書き換える必要があることを指定します。3 番目のルールは、名前に href を含むすべての属性を書き換える必要があることを指定する簡単な HTML ルールです。この例では、DHTML パラメータルールは関数内の書き換えの必要があるパラメータを特定します。この場合、HTML 属性ルールが適用され、特定されたパラメータが実際に書き換えられます。
これは、値が JavaScript の関数パラメータです。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" type="DJS" [source="*"]/>
各表記の意味は次のとおりです。
name は、1 つのパラメータが DJS である関数の名前です (必須)。
paramPatterns は、上の関数のどのパラメータが DJS であるかを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
type は DJS です (必須)。
source はページの URI です (省略可能、デフォルト * は任意の URI を意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/page.html
ページコンテンツ
<script> menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.co m\q")); </script>
ルール
<Function name="DJS" name="NavBarMenuItem" paramPatterns=",y"/> <Variable name="URL">top.location</Variable>
出力
<script> menu.addItem(new NavBarMenuItem("All Available Information", "JavaScript:top.location=\qgateway-URL/ http://abc.sesta.com\q")); </script>
説明
最初のルールは、JavaScript を含む関数 NavBarMenuItem の 2 番目のパラメータを書き換える必要があることを指定します。JavaScript 内で、変数 top.location も書き換える必要があります。この変数は 2 番目のルールを使用して書き換えられます。