1

我有一个带有 div 的 asp.net 应用程序,它触发一个弹出窗口(单击时)。如果代码背后的代码发生问题,我需要弹出窗口。

我想我可以向我的页面发送一个 javascript 代码块来单击 div,但我似乎无法让它工作。这是弹出插件的 jQuery:

$(function () {
   $('.c_popup').modalPopLite(
                { openButton: '#div_trigger', 
                  closeButton: '#close-btn' 
                });
});

一个简单的 div 触发它(通过单击 div):

<div id="div_trigger">Trigger</div>

我可以通过页面上的按钮从 javascript 中单击 div:

<input type="button" id="btn_show_error" value="Popup"
       onclick="document.getElementById('div_trigger').click();" />

这样可行。但是,当我尝试从后面的代码中准确地将该 javascript 块发送到页面时,如下所示:

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
       "<script>document.getElementById('div_trigger').click();</script>")

什么都没发生。我通过更改为一个简单的警报框来测试我的代码:

ClientScript.RegisterStartupScript(Page.GetType(), "error_click",
     "<script>alert('Hello World');</script>")

这很好用。因此,我可以看到 javascript 正在从我的代码后面到达页面,并且当它来自页面本身的按钮时,相同的 javascript 块可以执行我想要的操作,但是来自后面的代码它不起作用。

任何想法,将不胜感激。我真的被困住了。

编辑:两个海报回应说我在绑定弹出控件之前发布了我的javascript。我不确定如何解决这个问题,即使我得到了帮助。我尝试在我的页眉块中创建这个函数:

function TriggerDiv() {
    $(document).ready(function () {
        alert('success');     //alert just to check if the function is firing
        document.getElementById('div_trigger').click();
    });
}

并从我后面的代码中调用它,如下所示:

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
    "<script>TriggerDiv();</script>")

警报会触发,但点击事件不会 - 我认为我仍然没有按正确的顺序做事。任何进一步的帮助将不胜感激。

4

3 回答 3

2

该元素可能在 javascript 执行时不存在,或者至少您的调用modalPopLite尚未执行。将您的代码包装在$(document).ready.

编辑:该元素在执行时应该存在。 RegisterStartupScript将脚本添加到body. 但是,该modalPopLite调用尚未执行,因此尚未附加单击处理程序。 $(document).ready应该还是能解决这个问题。

于 2013-09-19T20:10:21.400 回答
1
<script>
    function SayHi()
{
   alert('hi');
}
</script>

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "TestFunction", "SayHi();", true);
于 2013-09-19T20:22:47.777 回答
1

启动脚本放置在表单末尾的页面中,因此它将在ready事件之前运行,就像加载整个文档时那样。点击触发就好了,只是还没有处理程序关心点击。

只要您的弹出插件脚本在表单末尾之前(例如通常推荐的;在头部),您就可以绑定另一个ready事件处理程序,这将在弹出窗口绑定后触发:

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
   "<script>$(function(){ document.getElementById('div_trigger').click(); });</script>");

您可能需要使用 jQuery 触发事件的方式来触发使用 jQuery 绑定的事件:

ClientScript.RegisterStartupScript(Page.GetType(), "error_click", 
   "<script>$(function(){ $('#div_trigger').click(); });</script>");
于 2013-09-19T20:17:58.050 回答