Mar*_*123 9 javascript internet-explorer angularjs
我在Internet Explorer 7和8甚至9上加载我的应用程序时遇到问题.
我收到以下错误消息(控制台)
Uncaught TypeError: Cannot read property 'nodeName' of undefined
Run Code Online (Sandbox Code Playgroud)
在加载时,{{}}变量正在加载和消失.什么都没有呈现.
我把它添加到html标签:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:ng="http://angularjs.org" id="ng-app" class="ng-app: myapp;">
Run Code Online (Sandbox Code Playgroud)
我在AngularUI框架中添加了ieshiv.js.
我补充道
<!--[if lt IE 8]>
<script src="files/js/json3.min.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
(问题:这已经足够了,只是添加到我的头部或者我也必须修改我的代码吗?)
我还把这个添加到我的头部:
<!--[if lte IE 8]>
<script>
document.createElement('ng-include');
document.createElement('ng-pluralize');
document.createElement('ng-view');
document.createElement('slide');
document.createElement('carousel');
// Optionally these for CSS
document.createElement('ng:include');
document.createElement('ng:pluralize');
document.createElement('ng:view');
</script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
它根本不起作用.没有加载变量,没有列表呈现,网站不工作.
Chrome,FF和Opera工作正常.
你有什么提示从哪里开始?
编辑1:
在paste.bin http://pastebin.com/z67qE9ME上链接到我的controller.js
编辑2:
这可能是js加载的顺序吗?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<!--[if lt IE 8]>
<script src="files/js/json3.min.js"></script>
<![endif]-->
<script src="files/js/angular.min.js"></script>
<script src="files/js/ui-bootstrap-tpls-0.1.0-SNAPSHOT.js"></script>
<script src="files/js/angular-ui.js"></script>
<script src="files/js/angular-resource.min.js"></script>
<script src="files/js/controller.js"></script>
<script src="files/js/select2.js"></script>
<script src="files/js/main.js"></script>
Run Code Online (Sandbox Code Playgroud)
编辑3:
好的,我在我的脚本中添加了fauxconsole.js并清理了代码并且工作正常.好吧,至少它是正确加载(没有任何CSS纠正).但它不会在我的某些标签上加载内联样式.你知道为什么吗?
<a ng-click="details.show=toggle(marker)" ng-class="{active_marker: active_marker.show == marker.id}" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.coordleft}}px;top:{{marker.coordtop}}px">
</a></div>
Run Code Online (Sandbox Code Playgroud)
编辑4:
编辑3也可以通过此帮助解决:https:
//groups.google.com/d/msg/angular/0zHsVuUryKI/ckTvY93NcRsJ
但我现在遇到了另一个问题.在IE 8及更低版本中,路径模板未呈现.我只看到{{}}变量,而不是更多.
编辑5:
这很奇怪.我设法正确加载第一个模板.所有方括号{{}}都正确加载.
我将.resolve添加到我的Ctrl:
// DealerDetailsCtrl
function DealerDetailsCtrl($scope, $rootScope, $routeParams, dealerService, datasets) {
$scope.loading = true;
// Abfrage
$rootScope.dealerdetails = datasets;
// inline styles fuer positionierung laden
$rootScope.itemStyle2 = function (item) {
return { left: item.divleft * 1 + 390 + 'px', top: item.divtop * 1 + 160 + 'px'};
};
//Feedback zur Message zurruecksetzen
$scope.issend = $rootScope.issend;
$rootScope.issend = false;
$scope.loading = false;
//Close Button
$rootScope.close = function() {
$rootScope.marker = null;
$rootScope.details = {show: false};
$rootScope.alldealer = {show: false};
$rootScope.active_marker = null;
};
$rootScope.$on("$routeChangeStart", function (event, next, current) {
$scope.loading = true;
});
}
DealerDetailsCtrl.resolve = {
datasets : function($q, $http, $route, $rootScope) {
var deferred = $q.defer();
$http.get('files/framework/dealer/'+ $route.current.params.id +'/' + $rootScope.token).success(function(data) {
deferred.resolve(data);
});
return deferred.promise;
}
};
Run Code Online (Sandbox Code Playgroud)
奇怪的是.从(正确渲染)模板,我链接到第二个模板和路线(从经销商/:id到/ dealermessage /:id),但是这条路线(包括解决方案在内的所有内容都相同)未正确加载,相同错误比以前,模板不呈现.
路线:
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/dealer/:id', {
templateUrl: 'files/tpl/dealer-details.html?333',
controller: 'DealerDetailsCtrl',
activetab: 'details',
resolve: DealerDetailsCtrl.resolve
}).
when('/dealermessage/:id', {
templateUrl: 'files/tpl/dealer-message.html?222',
controller: 'DealerMessageCtrl',
activetab: 'message',
resolve: DealerMessageCtrl.resolve
}).
when('/dealersendmessage/:id', {
templateUrl: 'files/tpl/dealer-details.html?444',
controller: 'DealerDetailsCtrl',
activetab: 'details',
resolve: DealerDetailsCtrl.resolve
}).
otherwise({
redirectTo: '/dealer'
});
}]);
Run Code Online (Sandbox Code Playgroud)
有没有人有线索,错误可能是什么或在哪里?
每当我在 IE 中遇到此类错误(特别是 8)时,都是这两个问题之一。
1)我正在使用自定义标签,例如<auto-complete>并且没有使用document.createElement
2)我有具有重复id属性的元素。IE 不喜欢这样。
排除法通常适用于我隔离模板中的问题。
| 归档时间: |
|
| 查看次数: |
14064 次 |
| 最近记录: |