2010-08-03 8 views
1

J'ai une application .NET 2.0 (utilisant C#) qui affiche des pages HTML construites dynamiquement, dont certaines contiennent Silverlight. Voici un exemple simple du HTML (Remarque, je suis en utilisant des chemins absolus):Le contrôle WebBrowser a des résultats différents pour le chargement de l'URL et la définition de DocumentTexte contenant Silverlight

<html> 
    <head></head> 
    <body> 
     <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
      <param name="source" value="file:///c:/foo/bar/test.xap"/> 
      <param name="onError" value="onSilverlightError" /> 
      <param name="background" value="yellow" /> 
      <param name="minRuntimeVersion" value="4.0.50401.0" /> 
      <param name="autoUpgrade" value="true" /> 
     </object> 
    </body> 
</html> 

Si j'ai mon contrôle WebBrowser charger un fichier local contenant ce, il fonctionne très bien:

WebBrowser browser = new WebBrowser(); 
browser.Url = new Uri("file:///C:/foo/bar/simpleExample.html"); 

Cependant, si je définis DocumentText en utilisant exactement le même HTML, l'application Silverlight ne se chargera pas. Il semble que le plugin se charge (si vous faites un clic droit, il dira "Silverlight"), mais pas le contenu. J'utilise une application Silverlight très simple.

WebBrowser browser = new WebBrowser(); 
browser.DocumentText = "<html>...same HTML as above...</html> 

Je préférerais grandement utiliser cette dernière méthode et ne pas avoir à utiliser de fichiers locaux. Une idée de pourquoi je verrais ces différences? J'ai également essayé la même situation en utilisant Silverlight.js pour que Javascript insère dynamiquement Silverlight mais obtienne le même résultat.

+0

En relation: http://stackoverflow.com/q/722166/103167 –

Répondre

3

Lorsque vous définissez DocumentText the base url is changed to about:blank. Pour modifier cela, ajoutez une balise de base ou définissez le flux de documents sur un flux qui a également implement IMoniker::GetDisplayName pour renvoyer l'URL de base.

+0

L'idée du flux de documents est très intéressante! Bon à savoir. Je suis toujours curieux de savoir pourquoi Silverlight se comporte différemment quand l'url est sur: vide. – Newtang

+0

zone de sécurité, je suppose. about: blank est dans la zone internet, qui n'a pas accès aux fichiers dans la zone informatique locale –