[英]How to load javascript function from an dynamicall added control?
母版頁上有一個ScriptManager。
然后我得到了一個帶有ScriptManagerProxy和UpdatePanel的控件。
在UpdatePanel內部,我動態地添加了一個控件(也包含ScriptManagerProxy),並且需要從該控件中運行一些JavaScript代碼。
DynamicControl.ascx:
<script type="text/javascript">
function doSomething() {
alert(1);
}
</script>
DynamicControl.ascx.cs:
public void Page_Load(object sender, EventArgs e)
{
...
ScriptManager.RegisterStartupScript(
this.Page, this.GetType(), "scriptID",
"<script type='text/javascript'>doSomething();</script>", false);
我的問題是函數“ doSomething()”從未調用過,我也不知道為什么。 :S編輯:當我添加控件時,它被調用但不是直接調用。
如果我這樣做,則將出現一個警報窗口:
"<script type='text/javascript'>alert(1);</script>"
好的,我想我需要添加更多信息:
該控件是動態添加在jQuery對話框中的。 我發現在關閉然后打開對話框之后,首先執行了Javacode。 我認為某種事件被觸發,以便代碼在那里執行。 是否可以強制此事件? 因此,在添加控件時直接執行腳本?
placeHolder.Controls.Add(dynamicReportControl);
此C#代碼不會立即執行javascript標記嗎?
請嘗試這樣的事情
ScriptManager.RegisterStartupScript(
this.UpdatePanel1, this.UpdatePanel1.GetType(), "scriptID",
"<script type='text/javascript'>doSomething();</script>", false);
其中UpdatePanel1是您的UpdatePanel
嘗試將addScriptTags參數設置為true,然后從代碼中刪除腳本聲明。
該代碼僅應在每個請求上運行嗎? 如果是這樣,為什么不將以下代碼添加到ASCX:
window.onload = doSomething();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.