2015-06-18 49 views
0

我有一個要求,即必須在另一個站點上加載我的asp.net mvc/angularjs應用程序。因此我必須使用iframe在Iframe中加載時隱藏標題部分

<iframe width="500" height="500" frameborder="0" scrolling="yes" src="http://localhost:12534/home"></iframe> 

樣本頁面(索引頁)在我的MVC網站,如下圖所示:

@{ 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

    //other page components 

_Layout.cshtml

<body xmlns:ng="http://angularjs.org" id="ng-app" ng-cloak ng-controller="MainController"> 

    <header ng-class="{'no-shadow': page == 'home'}"> 
     <div class="container"> 
          <ul class="nav navbar-nav navbar-right"> 
          <li><a href="/HowItWorks">How It Works</a></li> 
         </ul> 
        </div> 
     </div> 
    </header> 
</body> 

我的問題:你能告訴我我該怎麼只在iframe內加載時隱藏_layout頁面的標題部分?提前致謝。

+1

'窗口== window.top'應該做的伎倆。如果結果爲true,則顯示/呈現標題。 JS對象'window.top'引用頂部框架。如果這與當前窗口相同,那麼你的應用程序不會運行在iframe中 – Michael

+0

@Michael對不起,我沒有得到。你可以把它作爲一個答案與更多的細節? – Sampath

+0

@邁克爾非常感謝。你能把它當作答案嗎?然後我可以關閉這篇文章。 – Sampath

回答

1

啓動時檢查頂部窗口是否與當前窗口相同。 如果頂部窗口來自另一個域,您可能會將該條件包含在try-catch子句中,因爲如果您嘗試訪問window.top,它可能會拋出權限異常。

angular.module('app', []) 
    .run(function($window, $rootScope) { 
    $rootScope.isStandalone = $window == $window.top; 
    }); 
在HTML

渲染根據這一條件的頭

<div class="header ng-cloak" ng-if="isStandalone">[header]</div> 

編輯:Plunker