テキストフィールドがフォーカスされたときに JavaScript ファイルをレンダリングする mixin を作成しています。
タペストリーのミックスインのアイデアは初めてで、テキストフィールドがフォーカスされたときに実行したい元の JavaScript ファイルをどこに配置すればよいかわかりません。
以下は私のコードの例です: Java mixin クラス:
package asc.mixins;
import org.apache.tapestry5.RenderSupport;
import org.apache.tapestry5.annotations.AfterRender;
import org.apache.tapestry5.annotations.Environmental;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.corelib.base.AbstractTextField;
@IncludeJavaScriptLibrary("js_dasher_mixin.js")
public class DasherMixin {
@Environmental
private RenderSupport renderSupport;
@InjectContainer
private AbstractTextField field;
@AfterRender
void addScript() {
this.renderSupport.addScript("new JSDasher('%s');",
this.field.getClientId());
}
}
Javascript mixin ファイル:
JSDasher = Class.create({
initialize: function(textField)
{
this.textField = $(textField);
this.textField.observe('focus', this.onFocus.bindAsEventListener(this));
},
onFocus: function(event)
{
//call my javascript init() function
}
}
テキストフィールドがフォーカスを得たときに実行したい私のJavaScriptファイルの一部:
var posX, posY;
// Sets up our global variables and dispatches an init request to the server.
function init() {
posX=0;
posY=0;
canvas = document.getElementById("canvas");
canvasWidth = canvas.offsetWidth;
canvasHeight = canvas.offsetHeight;
if (canvas.getContext) {
ctx = canvas.getContext("2d");
}
canvas.onclick = canvasClicked;
canvas.onmousemove = mouseMoved;
canvasOffsetX = findPosX(canvas);
canvasOffsetY = findPosY(canvas);
sessID = -1;
sendInitRQ(canvasWidth, canvasHeight);
}
私の JavaScript ファイルは上記よりもはるかに大きいです。私の質問は、上記の JavaScript コードをどこに置くべきかということです。
すべて mixin.js ファイルに含める必要がありますか? もしそうなら、それは正確にどこに行くべきですか?
助けてくれてありがとう。