我有一个Silverlight应用程序,我们正在转换为HTML5。
我已经完成了一个页面,我们希望能够在它们之间切换,但是存在问题。我处理的页面是用户登录时首先看到的页面。我们希望加载Html页面并隐藏Silverlight应用程序。
这就是索引页面现在的样子:
@using DTO
@model Models.QMForm
@{
ViewBag.Title = ".:: QM";
Layout = "~/Views/Shared/MainLayout.cshtml";
}
@section menu
{
@if (this.User.Identity.IsAuthenticated)
{
if (@Model is Manager)
{
<li id="home" class="active">
<a href="#" id="menu_dashboard" onclick="navigateTo
('home');">@Model.menuDashboard</a></li>
}
<li id="performancecenter">
<a href="#" id="menu_performance" onclick="navigateTo
'performancecenter');">@Model.menuPerformance</a></li>
if (@Model is Manager || @Model is ApplicationAdministrator)
{
<li id="designcenter">
<a href="#" id="menu_design" onclick="navigateTo
('designcenter');">@Model.menuDesign</a></li>
}
}
}
<div id="silverlightControlHost" style="padding: 0; margin: 0; height: 100%; width: 100%;">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="silverlight_control"
style="width: 100%; border: 0px; border-style: none; padding: 0; margin: 0;">
<param name="source" value="~/ClientBin/Coach.UI.QM.xap" />
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="5.1.20513.0" />
<param name="autoUpgrade" value="true" />
<param name="Windowless" value="true" />
<param name="splashscreensource" value="~/SplashScreen.xaml" />
<param name="onSourceDownloadProgressChanged" value="onSourceDownloadProgressChanged" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.1.20513.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
</div>
navigateTo(view)
javascript函数看起来像这样
function navigateTo(navName) {
var control = document.getElementById("silverlight_control");
if (control && control.Content && control.Content.MainPage) {
control.Content.MainPage.onNavClicked(navName);
setMenu(navName);
}
}
这里的问题是我们需要在应用程序加载时运行Silverlight,因为我们需要它稍后从第一个(主页)屏幕导航到其余部分。
我首先尝试在Silverlight主机上添加div
,然后使用.show()
和.hide()
,但如果我没有将Silverlight控件设置为隐藏我将在Silverlight div上面有一个巨大的滚动条和新的HTML内容。
如果Silverlight div在开头隐藏,则它不会加载,我无法离开主屏幕。
任何想法如何以简单的方式在它们之间切换?
答案 0 :(得分:0)
您是否尝试过silverlight div上的css hide技巧而不是设置display:none?
.hide {
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
http://css-tricks.com/places-its-tempting-to-use-display-none-but-dont/