1

我有一个示例 asp.net 按钮,我正在为其编写点击事件并尝试打开一个新的弹出窗口,由于某种原因弹出窗口没有打开,请我知道问题是否与浏览器或代码有关

测试.aspx

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">

        function openNewWin(url) {

            var x = window.open(url, 'mynewwin', 'width=600,height=600,toolbar=1');

            x.focus();

        }

</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <asp:Button ID="btnOpenPop" runat="server" Text="Open Pop"           

        onclick="btnOpenPop_Click" />
    </div>
    </form>
</body>
</html>

测试.cs

public partial class Test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


        }

        protected void btnOpenPop_Click(object sender, EventArgs e)
        {
            string url = "http://www.dotnetcurry.com";

             ClientScript.RegisterStartupScript(this.GetType(), "OpenWin", "<script>openNewWin('" + url + "')</script>");




        }
    }
4

5 回答 5

3

RegisterStartupScript 用于注册应该在页面加载(客户端)上运行的脚本。请改用 RegisterClientScript。

但是你为什么要回发来运行一个 javascript 函数呢?而不是尝试在服务器端执行代码,而是在客户端执行:

<asp:Button ID="btnOpenPop" runat="server" Text="Open Pop" OnClientClick="openNewWin(<%= URL %>)" />

并将 URL 声明为您的类中的属性:

public partial class Test : System.Web.UI.Page
{
    public string URL {get;set;}
    //...
}
于 2012-10-11T09:20:44.283 回答
1

将此 Javascript 放在头部

 <script type="text/javascript">
            function popup(url) {
                var width = 600;
                var height = 600;
                var left = (screen.width - width) / 2;
                var top = (screen.height - height) / 2;
                var params = 'width=' + width + ', height=' + height;
                params += ', top=' + top + ', left=' + left;
                params += ', toolbar=no';
                params += ', menubar=no';
                params += ', resizable=yes';
                params += ', directories=no';
                params += ', scrollbars=no';
                params += ', status=no';
                params += ', location=no';
                newwin = window.open(url, 'd', params);
                if (window.focus) {
                    newwin.focus()
                }
                return false;
            }     
        </script>

现在在按钮点击上调用它

 <asp:Button ID="Button2" runat="server" 
             OnClientClick="popup('addNewClients.aspx');" 
             Text="Add New Clients" />
于 2013-08-04T20:26:41.653 回答
1

您是否尝试在openNewWin通话后添加分号?像这样

"<script>openNewWin('" + url + "');</script>"
于 2012-10-11T09:11:54.630 回答
0

使用脚本管理器

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "", "<script>$(function () {$('#popupID').modal({show:true,keyboard: false, backdrop: 'static'});});</script>", false);
于 2019-07-12T05:28:17.230 回答
-2

使用 jquery 作为弹出窗口,

$('#btnOpenPop).bind('click',function() { 

var x = window.open(url, 'mynewwin', 'width=600,height=600,toolbar=1'); 

 x.focus(); 

}); 
于 2012-10-11T09:18:28.107 回答