我正在尝试使用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>
答案 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);
}