我的問題是我的AngularJS(最新v1.X)無法添加到我在IE中從它生成的DOM svg元素。AngularJS/Dynamic <svg>未在Microsoft IE中編譯爲DOM 11
我沒有錯誤顯示在開發控制檯。因爲svg容器的寬度和高度是由Angular設置的,所以我的應用程序被加載(因此也是控制器)。
應用程序工作正常在Firefox,Chrome瀏覽器,平板電腦Chrome和Android瀏覽器...
我的指令:
'use strict';
My_App.directive('ngHtmlCompile', ["$compile", function ($compile) {
return {
restrict: 'A',
replace: true,
link: function (scope, element, attrs) {
scope.$watch(function() {
return scope.$eval(attrs.ngHtmlCompile);
}, function (value) {
element.html(value);
$compile(element.contents())(scope);
});
}
}
}]);
我的HTML:
<!DOCTYPE html>
<html lang="fr" ng-app="My_App" ng-controller="App">
<head>
<meta charset="UTF-8">
<title>My App</title>
<style>
* { margin:0; padding:0; @import url('https://fonts.googleapis.com/css?family=Open+Sans'); font-family: 'Open Sans', sans-serif; font-weight: bold; } /* Retire les espaces autour du canvas */
html, body { width:100%; height:100%; } /* Override le comportement des navigateurs */
svg { display:block;background-color: dimgrey;} /* Retire la scrollbar */
svg text {
cursor: default;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
::selection, ::-moz-selection{background: none;}
</style>
<script type="text/javascript" src="angular/angular.min.js"></script>
<script type="text/javascript" src="js/MyApp.js"></script>
</head>
<body>
<svg id="MyApp" ng-cloak ng-attr-width="{{svg.width}}" ng-attr-height="{{svg.height}}" ng-html-compile="html"></svg>
</body>
</html>
在控制器端,my $ scope.html在啓動時用XHR請求更新一次,然後每5秒更新一次然後調用ngHtmlCompile來讀取它,並將存儲的html添加爲svg的子節點。
如果缺少任何東西,你可以問我。在第一篇文章中,請隨時告訴我我的請求是否有任何問題。最後,如果我的英語被打破,我很抱歉,我是法語。
感謝您的幫助。
在IE不能使用生成.html()方法來創建SVG元素。在IE11出貨後,規範改爲支持這一點。較新的瀏覽器確實支持這一點。 –
感謝您的回覆。我很高興知道問題現在在哪裏。任何解決方案,它在IE11上工作呢?我可以使用畫布,但這意味着要重寫evey畫圖功能來支持畫布。 –
我不能只使用ng-view,並使用應用程序在html文件中構建svg元素嗎?我應該嘗試一下。 –