我有一个复合服务器控件,其中包含一个 div,我在 Render 方法中附加了一个右键单击事件处理程序(为清楚起见进行了简化):
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
writer.write(@"
<script type=""text/javascript"">
document.getElementById(""myDiv"").onmousedown = function(event)
{
e = FixupMouse(event);
if (e.which == 3)
// Do my stuff
}
</script>
";
}
服务器控件放置在 aspx 页面上的更新面板中。
初始页面加载后一切正常,但一旦更新面板执行回调,事件处理程序就会丢失。我已将函数更改为仅发出警报以证明它不是函数中的任何代码。
服务器控件本身声明如下:
public class myBase : CompositeControl, INamingContainer
我真的不知道为什么会这样……有什么线索吗?