我展示经由模态对话框“window.showModalDialog(...”,这发生在一个VBScript函数(显示的页面是C ++)。我想这样做基于数量的窗口的尺寸调整某些在数据表中的行是要回来,所以很自然,我去注册基于行。好了,没有工作的数量调整大小的窗口中启动脚本,所以我想注册一个脚本,只是显示一个MsgBox。

的代码如下所示(在onLoad事件处理):

 if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello"))
        {
            this.ClientScript.RegisterStartupScript(typeof(MyPageClassName), "hello",
                    @"<script language=vbscript>
                        sub fnWindowOnLoad()
                            MsgBox ""hello""
                        end sub
                        <script>", false);
        }
        if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello"))
        {
            throw new Exception("Failed to load script");
        }

要我来说,它看起来像这应该工作,并显示一个消息框,说“你好”时,页面加载(我有设定为fnWindowOnLoad窗口的onload事件)。但发生的事情是什么,也不例外,没有任何警报。我尝试每一种类型的,我可以在typeof呼叫想到的。似乎没有任何工作。我能想到的唯一的事情是,因为对话是一个模式ClientScript.RegisterStartupScript将无法正常运行。但是,这并没有任何意义了我。

我把MSGBOX“你好”直接调用我的脚本块和警报显示,所以它是可能的。但我需要修改一些参数后面的代码,所以我必须尽可能我可以告诉使用的RegisterStartupScript。

有帮助吗?

解决方案 2

此的解决方案是有一个脚本,读取的值出一个隐藏字段中,然后调整大小的对话框。该值在Page_Load中设置。使用的RegisterStartupScript似乎从来没有工作,也没有RegisterClientScript,所以我敢肯定模态对话框和RegisterXxx不来。需要使用window.dialogHeight&window.dialogWidth中的VBScript。

其他提示

您是否尝试过通过window.open打开你的窗口(),而不是window.showModalDialog()?我已经看到大约在showModalDialog()和的RegisterStartupScript之间的不兼容的网络上的一些贴子。

在showModalDialog()是一个IE唯一方法,所以它不是反正建议。我知道这是方便,因为它返回一个值,但也有不同的方法来模拟这种功能。

修改的另一个问题在showModalDialog()是一个IE经常缓存的结果。这意味着,如果一个时间你打电话的对话框中,你不调整其大小,然后又这样做一次,然后第二次可能会得到你的第一个缓存对话框。要解决这个问题的方法是在末尾添加一个独特的查询字符串。像MyDialog.aspx Q = 320934(基于服务器抽动随机生成或产生的)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top