【问题标题】:How do you instantiate .NET hosted controls dynamically loaded via JavaScript?如何实例化通过 JavaScript 动态加载的 .NET 托管控件?
【发布时间】:2010-12-23 04:37:54
【问题描述】:

我正在尝试使用JavaScript 将一组 .NET 托管控件动态加载到页面中,以将 OBJECT 标记注入 HTML。

我的问题是对象没有实例化,只会出现在页面加载时可见的静态对象。有没有办法让这些对象加载?

<h1> Visible static</h1> <div id="staticObject"> <object id="Object1" name="dropfolder" classid="http:DropFolder.dll#DropFolder.DropFolder"> <param name="FolderName" value="Intranet only - Worcs"> <param name="NodeKey" value="default|Intranet"> <param name="DropAction" value=""> </object> </div> <h2> Hidden static</h2> <div id="objwrap" style="display: none;"> <object id="default_Intranet" name="dropfolder" classid="http:DropFolder.dll#DropFolder.DropFolder"> <param name="FolderName" value="Intranet only - Worcs"> <param name="NodeKey" value="default|Intranet"> <param name="DropAction" value=""> </object> </div> <input type="button" value="unhide!" onclick="document.getElementById('objwrap').style.display = 'block';" /> <h2> OnLoad target</h2> <div id="objectTarget1"> </div> <h2> Click target</h2> <div id="objectTarget2"> </div> <input type="button" value="inject" onclick="javascript:inject('objectTarget2');" /> <script type="text/javascript"> function inject(target) { var target = document.getElementById(target); target.innerHTML = '<object id="default_Intranet" name="dropfolder" classid="http:DropFolder.dll#DropFolder.DropFolder">' + '<param name="FolderName" value="Intranet only - Worcs">' + '<param name="NodeKey" value="default|Intranet">' + '<param name="DropAction" value="">' + '</object>'; }; inject('objectTarget1'); </script>

【问题讨论】:

    标签: javascript dynamic controls internet-explorer hosted


    【解决方案1】:

    你可以试试:

    function inject(target) {
      var obj = document.createElement("object");
    
      obj.id = "default_Intranet";
      obj.name = "dropFolder";
      obj.classid = "http:DropFolder.dll#DropFolder.DropFolder";
    
      var param1 = document.createElement("param");
      param1.name = "FolderName";
      param1.value = "Intranet only - Worcs";
      obj.appendChild(param1);
      // repeat for other params
    
      document.getElementById(target).appendChild(obj);
    }
    

    【讨论】:

    • 我想我在某个时候尝试过,解决方案是注入对象标签,然后在 DOM 中设置一次 classid。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2020-05-16
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多