无法让 RegisterClientScriptBlock() 方法在传递“true”作为最后一个布尔参数时工作

Unable to get the RegisterClientScriptBlock() method to work when passing "true" as last Boolean parameter

本文关键字:true 最后一个 布尔 工作 参数 RegisterClientScriptBlock 方法      更新时间:2023-09-26

以下是尝试在页面中包含脚本的 3 个版本:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JqueryTestFile1",
     "<script type='"text/javascript'" src='"jqueryTEST1.js'"></script>", false);
Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "JqueryTestFile2",
     "jquery-1.11.0.min.js");
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "JqueryTestFile3",
     "src='"jqueryTEST3.js'"", true);

前两个版本工作正常。但是,最后一个参数为 "true" 的第三个参数实际上是在源代码中呈现<![CDATA[,我无法让它工作。

为什么要渲染 CData ?在这种情况下,它有什么作用?如何在不删除"true"参数的情况下使第三个版本正常工作?下面是在浏览器中呈现的 html 代码:

<form method="post" action="ScriptsManager.aspx" id="Form1">
     <script type="text/javascript" src="jqueryTEST1.js"></script>
     <script src="jquery-1.11.0.min.js" type="text/javascript"></script>
     <script type="text/javascript">
          //<![CDATA[
          src="jqueryTEST3.js"//]]>
     </script>
     <input type="button" value="ClickMe" onclick="DoClick()" />     
</form>

附加信息:

[只是为了避免所有这些JS文件:JqueryTest1.js等都存在于我的解决方案中的适当位置的任何混淆]。在JqueryTest3.js中,只有以下代码:

function DoClick(){
alert("Hi");
}

如果我将此DoClick()函数放在JqueryTest1.js文件中,它可以完美运行。

.aspx标记:

<form id="Form1" runat="server">
  <input type="button" value="ClickMe" onclick="DoClick()" />
 </form>

将代码替换为以下内容

    ScriptManager.RegisterStartupScript(this,this.GetType(), "JqueryTestFile3",
 "src='"jqueryTEST3.js'"", true)

记得添加到您的页面