0

我正在使用以下代码动态添加 javascript

 HtmlGenericControl scriptTagLinks = new HtmlGenericControl("script");
 scriptTagLinks.Attributes["type"] = "text/javascript";
 var scrip = "var aImgs=[" + appendString.ToString().TrimEnd(new char[] { ',' }) + "]";
  scriptTagLinks.InnerHtml = scrip;

Javascript 正在添加到 ascx 页面。但我的问题是我在页面中有两个 javascript 块,一个是添加 dynamicllay ,即提供所有图像。另一个 javascript 如下。

<script type="text/javascript>
     window.onload = function () {
     for (var i = 0; i < aImgs.length; i++) {
            var oImg = new Image();
            oImg.src = aImgs[i];
            aImages.push(oImg);

            oImg.onload = function () {
                textureWidth = oImg.width;
                textureHeight = oImg.height;
            }
        }} 
</script>

但在脚本下方添加了动态创建的 javascript。但应该像这样在脚本上方添加。

   <script type="text/javascript">
        var aImgs = [
        'DesktopModules/DNAiusCubeImages/Check/pic1.jpg',
        'DesktopModules/DNAiusCubeImages/Check/pic2.jpg',];
    </script>
<script type="text/javascript>
         window.onload = function () {
         for (var i = 0; i < aImgs.length; i++) {
                var oImg = new Image();
                oImg.src = aImgs[i];
                aImages.push(oImg);

                oImg.onload = function () {
                    textureWidth = oImg.width;
                    textureHeight = oImg.height;
                }
            }} 
    </script>How can i achieve this . 
4

2 回答 2

1

你能试试这样做吗。

 // Form the script that is to be registered at client side.
   String scriptString = "<script language=JavaScript> function DoClick() {";
   scriptString += "myForm.show.value='Welcome to Microsoft .NET'}<";
   scriptString += "/";
   scriptString += "script>";

       if(!this.IsClientScriptBlockRegistered("clientScript"))
          this.RegisterClientScriptBlock("clientScript", scriptString);

MSDN 中的示例 http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock%28v=vs.71%29

客户端脚本在 Page 对象元素的开始标记之后发出。脚本块在定义呈现输出的对象时发出,因此您必须包含元素的两个标签。

通过使用键标识脚本,多个服务器控制实例可以请求脚本块,而无需将其发送到输出流两次。

于 2012-08-30T08:34:44.693 回答
0

看看 ScriptManager.RegisterStartupScript。您可以添加没有事件 onLoad 的脚本。只是一个接收图像路径数组的函数。

然后使用 Page.ClientScript.RegisterStartupScript(...); 从服务器端代码的 OnLoad 事件中,您可以调用您的 Javascript 函数并传递您需要的参数(数组)。

于 2012-08-30T08:45:42.253 回答