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 ページに追加されています。しかし、私の問題は、ページに2つのjavascriptブロックがあり、1つはすべての画像を提供するdynamicllayを追加することです。次のようにもう1つの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 オブジェクトの要素の開始タグの直後に発行されます。スクリプト ブロックは、出力をレンダリングするオブジェクトが定義されているときに発行されるため、要素の両方のタグを含める必要があります。

スクリプトをキーで識別することにより、複数のサーバー コントロール インスタンスが、出力ストリームに 2 回出力されることなく、スクリプト ブロックを要求できます。

于 2012-08-30T08:34:44.693 に答える
0

ScriptManager.RegisterStartupScriptを見てください。イベントonLoadなしでスクリプトを追加できます。画像パスの配列を受け取る関数です。

そして、Page.ClientScript.RegisterStartupScript(...);を使用します。サーバー側コードのOnLoadイベントから、Javascript関数を呼び出して、必要なパラメーター(配列)を渡すことができます。

于 2012-08-30T08:45:42.253 に答える