我有一个带有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>")
警报触发,但点击事件没有 - 我认为我仍然没有按照正确的顺序做事。任何进一步的帮助将非常感激。
答案 0 :(得分:2)
javascript执行时可能不存在该元素,或者至少您对modalPopLite
的调用尚未执行。将您的代码包裹在$(document).ready
。
编辑:元素应该在执行时存在。 RegisterStartupScript
将脚本添加到body
的底部。但是,modalPopLite
调用尚未执行,因此单击处理程序尚未附加。 $(document).ready
仍应解决此问题。
答案 1 :(得分: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>");
答案 2 :(得分:1)
<script>
function SayHi()
{
alert('hi');
}
</script>
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "TestFunction", "SayHi();", true);