我的公司已經創建了一個在iframe中啓動自定義應用程序的通用應用程序。父窗口允許最終用戶點擊工作列表中的項目,並且根據他們點擊的內容,我們導航到啓動控制器,該控制器將爲與該任務關聯的產品建立一個URL。然後,我們將該產品應用程序加載到啓動視圖中的iframe中。AngularJS - IE11中的重複源文件
我們看到IE開發人員工具中存在重複的靜態內容文件(js和部分模板)。
我們最終每個負載的iframe後看到文件的其他副本。由於我們是SPA,所以假設這些文件將被緩存(除了IE之外,它們都在所有瀏覽器中)。每個文件都由同一個Web服務器提供。我們甚至注意到,如果我們不在js文件的正確實例中設置斷點,它不會被擊中。
我們已經嘗試過很多事情,包括在啓動控制器內的destroy事件中刪除iframe(因爲幀被添加到窗口對象,我們認爲它是永遠活着的)。我們確保iframe具有有效的ng-src標記,並且使用$ sce來動態創建url。
由於我們需要通過POST從窗體加載iframe,我們正在做類似這樣的事情,這是一種超級黑客提交POST的方式。該代碼段不會按原樣運行,但我想包含有關我們如何填充我們的iframe的信息。
function launch() {
//return launchService.launch(vm.url, buildLaunchRequest()).then(success, error);
$timeout(function() {
$("#productForm").submit().remove();
}, 1);
}
launch();
<div id="launch" class="container-fluid ss-container">
<iframe name="productFrame" id="productFrame" data-ng-src="{{vm.url}}" resize-frame />
</div>
<form id="productForm" role="form" method="post" action="{{vm.url}}" name="productForm" target="productFrame">
<input type="hidden" name="user" ng-value="vm.user" id="user" />
<input type="hidden" name="authToken" ng-value="vm.authToken" id="authToken" />
<input type="hidden" data-ng-repeat="(k,v) in vm.styles" name="{{k}}" value="{{v}}" />
</form>
我肯定有一個更好的方式來提交表單與目標是一個iframe,但此刻沒有什麼似乎已經爲我們工作。
如果有人看到這個重複的源文件問題和/或知道正確的方式來提交表單與控制器加載時自動生成輸入請幫助我們!
感謝,
傑克