VS2010、Silverlight 4.0Silverlightプロジェクトの生成されたhtmlテストページにjavascriptを追加します。
Visual Studioにデバッグ用のSilverlightプロジェクトをコンパイルするときに生成されるhtmlテストページにjavascript(またはそれに関係するもの)を追加する方法があるかどうかは知りませんか?テンプレートを使用していますか?もしそうなら、どこですか?
VS2010、Silverlight 4.0Silverlightプロジェクトの生成されたhtmlテストページにjavascriptを追加します。
Visual Studioにデバッグ用のSilverlightプロジェクトをコンパイルするときに生成されるhtmlテストページにjavascript(またはそれに関係するもの)を追加する方法があるかどうかは知りませんか?テンプレートを使用していますか?もしそうなら、どこですか?
本当に興味深い質問!
私はそのようなことを試みてきましたが、最終的に生ではあるものの、きれいな解決策を見つけました。まず、[プロパティ] - [デバッグ] - [特定のページ]を使用して特定のページを設定する必要があります。 マイページの例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>SilverlightApplication1</title>
<script type="text/javascript">
</script>
</head>
<body>
<div id="fillWithData">
</div>
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost" style="height: 100%; text-align:center">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="30%" height="30%">
<param name="source" value="file:///C:/Users/Igor/Documents/Visual Studio 2010/Projects/MobileTest/SilverlightApplication1/Bin/Debug/SilverlightApplication1.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>
</body>
</html>
注:空白のスクリプトとのdiv要素が重要です!動的なjs/htmlを読み込みます。
マイシルバーxaml.cs:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
HtmlDocument hostPage = HtmlPage.Document;
ScriptObject obj = hostPage.GetElementsByTagName("script")[0];
obj.SetProperty("innerHTML", "function alertonclick() { alert('Amazing! I am dynamic javascript!'); }");
HtmlElement ipAddressHtml = hostPage.GetElementById("fillWithData");
ipAddressHtml.SetProperty("innerHTML", @"<input id=""Button1"" type=""button"" value=""button"" onclick=""alertonclick();"" />");
}
}
非常に重要な注意:私はこのコードをテストしたのだが、のみオペラの下で動作します。 他のブラウザを使って何かをテストする必要がある場合は、javascriptを直接要素にインライン展開する必要があります。
例:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
HtmlDocument hostPage = HtmlPage.Document;
HtmlElement ipAddressHtml = hostPage.GetElementById("fillWithData");
ipAddressHtml.SetProperty("innerHTML", @"<input id=""Button1"" type=""button"" value=""button"" onclick=""alert('Amazing! I am dynamic javascript!');"" />");
}
}
このコードは(:)もちろんの)IE/FF /クローム/オペラの下に適しています。
私の場合、ダイナミックjsとhtmlの両方で最初の例が好きです。そして、私はそれを修正し、Operaだけでなく他のブラウザでも受け入れられると確信しています。
私の例があなたを助けることを願っています=)