1

Silverlight アプリケーションがあり、現在 HTML5 に移行中です。

1 つのページを終了しました。それらを切り替えられるようにしたいのですが、問題があります。私が取り組んだページは、ユーザーがログインしたときに最初に表示されるページです。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>

JavaScript関数は次のnavigateTo(view)ようになります

function navigateTo(navName) {
    var control = document.getElementById("silverlight_control");
    if (control && control.Content && control.Content.MainPage) {
        control.Content.MainPage.onNavClicked(navName);
        setMenu(navName);
    }
}

ここでの問題は、後で最初の (ホーム) 画面から残りの画面に移動する必要があるため、アプリの読み込み時に Silverlight を実行する必要があることです。

div最初に Silverlight ホストの上にを追加して、.show()and.hide()をいじってみましたが、Silverlight コントロールを非表示に設定しないと、Silverlight div の上に巨大なスクロールバーと新しい HTML が表示されます。

Silverlight div が最初に非表示になっていると、読み込まれず、ホーム画面から移動できません。

それらを簡単に切り替える方法はありますか?

4

1 に答える 1

0

display:none を設定する代わりに、Silverlight div で css hide トリックを試しましたか?

.hide {
   position: absolute !important;
   top: -9999px !important;
   left: -9999px !important;
}

http://css-tricks.com/places-its-tempting-to-use-display-none-but-dont/

于 2013-10-28T10:47:43.410 に答える