2010-10-22 67 views
1

我需要打开一个新窗口,其中一个单击 一个asp.net按钮。我的问题是,它总是需要两次点击..如果我写在页面加载打开的窗口 代码,则窗口打开获得1次点击.. 任何想法如何解决这个问题?用鼠标点击打开一个窗口(aspx页面)+ javascript

按钮单击代码:

btnClaim.Attributes.Add("Onclick","javascript:return OpenPopup()") 

JavaScript函数:

function OpenPopup() 
{ 
window.open("newWindow.aspx?", "_blank", "height=500, width=575, left=150, 
top=150, " + 
"location=no, menubar=no, resizable=no, " + 
"scrollbars=no, titlebar=no, toolbar=no", true); 
}
+0

题外话,因为我不t认为它与你的实际问题有关,但是:'onclick'不是超链接属性,你不需要(或者不需要)'javascript:'前缀。它不应该有任何伤害(因为它看起来像一个JavaScript标签,所以不是一个语法错误),但它最好是没用的。 (如果你使用'href',这将是一个不同的故事。) – 2010-10-22 17:28:58

+0

**另外**题外话:你想摆脱'window.open'调用逗号后面的空格。 (例如'... width = 575,left = 150 ...'not'... width = 575,left = 150 ...'原来的'window.open'实际上明确地禁止它们(并且倾向于阻碍我不敢打赌,有些UA不会这样做的 – 2010-10-22 17:30:33

+0

(如果你想知道,不,我不知道为什么它需要两次点击,它不应该,它不会如果你在做纯HTML + JavaScript的话。) – 2010-10-22 17:31:03

回答

4

问题是您要添加代码来处理点击事件处理程序中的点击。这意味着当您第一次点击按钮时,事件处理程序会将该属性添加到按钮中。回发之后,您可以再次单击该按钮以打开弹出窗口,因为该按钮现在具有客户端代码。

无论是在Page_Load中添加属性,使得按钮始终具有属性,或者在事件处理程序添加代码,调用立即函数回发后的页面:

ClientScript.RegisterStartupScript(Me.GetType(), "open", "OpenPopup();", True) 
2

这个问题可能是因为在上点击(回发)提交表单。如果您在onclick属性中返回false,则应取消表单提交。您也可以使用OnClientClick

btnClaim.OnClientClick = "javascript:OpenPopup(); return false;"; 
+0

不,这不会导致需要点击两次,但是在打开窗口之后,它可能会在第二次点击时导致另一次回发。 – Guffa 2010-10-22 17:38:27

相关问题