2

我目前正在尝试从 .NET 页面注册一个 JS 函数调用,该页面只是调用 .aspx 页面上的一个小函数,该函数将关闭窗口。

RegisterClientScriptBlock 代码如下:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>closeBox();</script>");

这种事情在不同页面上的应用程序的其他地方起作用。但是,在这种情况下,我得到一个运行时 JS 错误:错误:预期的 '/',当我调试时,插入的 javascript 果然是:

<script type='text/javascript'>closeBox();<

如您所见,由于某种原因,它没有添加 /script> !我试图自己省略标签并使用:

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "closeBox();", true);

但结果相同。

我也试过 RegisterStartupScript 无济于事。

有没有其他人遇到过这个?关于导致它的原因以及如何解决它的任何想法?

4

3 回答 3

0

我不确定它是否完全一样(我的记忆不再像以前那样),但我想我过去也遇到过类似的问题。解决方案是在脚本的各个部分之间放置一些行终止符,即

Page.ClientScript.RegisterClientScriptBlock (typeof(Page), "closeBox", "<script type='text/javascript'>\n\rcloseBox();\n\r</script>");
于 2009-09-29T11:13:44.170 回答
0

这个 RegisterClientScriptBlock 在哪里?它在一个<script runat="server">元素中吗?

如果是这样,aspx 解析器会将</script>C# 字符串文本内部视为封闭script元素的结尾,并将停在那里。如果您想将序列</script>放入 a 中<script>(这也适用于普通 JavaScript),您必须对其进行转义以分解序列。一个好办法是:

"\x3C/script"
于 2009-09-29T12:08:54.580 回答
0

这个错误原来是完全不相关的。

于 2009-10-29T10:39:06.520 回答