2009-12-04 13 views
0

J'essaye de charger dynamiquement un groupe de contrôles hébergés .NET dans une page en utilisant JavaScript pour injecter des balises OBJECT dans le code HTML.Comment instancier les contrôles hébergés .NET chargés dynamiquement via JavaScript?

Mon problème est que les objets n'instancent pas, seul l'objet statique visible sur le chargement de la page apparaîtra. Est-il possible de charger ces objets?

 

<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> 
 

Répondre

0

Vous pouvez essayer:

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

Je pense que j'ai essayé un à un moment donné, la solution a été d'injecter l'étiquette d'objet et puis définissez les classid une fois dans les DOM. – gum411