如何实例化通过JavaScript动态加载的.NET托管控件?

时间:2009-12-04 10:05:41

标签: javascript dynamic controls internet-explorer hosted

我正在尝试使用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>

1 个答案:

答案 0 :(得分:0)

你可以尝试:

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);
}