Des*_*xia 3 javascript internet-explorer-8 angularjs
我正在使用一个新的角度应用程序,需要使其向后兼容IE8.从它看起来像它加载我的路由信息,加载模板(到一个点)但在concole日志中我看到以下错误.
TypeError:Object不支持此属性或方法
<div class=ng-scope ng-view>
这是我的索引html页面的样子:
<!DOCTYPE html>
<html id="ng-app" ng-app="app">
<head>
<!--Add dependencies-->
<script src="jquery.min.js"></script>
<link rel="stylesheet" src="bootstrap.min.css" />
<script src="angular.min.js"></script>
<script src="angular-route.js"></script>
<script src="ui-bootstrap.js"></script>
<script type="text/javascript">
document.createElement('header');
document.createElement('nav');
document.createElement('menu');
document.createElement('section');
document.createElement('article');
document.createElement('aside');
document.createElement('footer');
</script>
</head>
<body>
<div id="wrapper">
<header class="header header-fixed">
<section class="navbar navbar-inverse docs-navbar-primary">
<div class="container">
<div class="row">
<div class="col-md-7" style="color:white; margin-top:14px;">Thinflash: Fullscreen Demo</div>
</div>
</div>
</section>
</header>
<section role="main" class="container main-body">
<div ng-view></div>
</section>
<!--Add AngularJs Files-->
<script src="swfObject.js"></script>
<script src="app.js"></script>
<script src="appControllers.js"></script>
<script src="thinflash.js"></script>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Template.html:
<div ng-controller="thinflash.controllers.playback">
<div ng-controller="app.controllers.fullscreen">
<div class="mainWrapper" id="stageWrapper">
<label>SWF Object Display </label>
<div class="swfWrapper" style="width:320px; height:240px;" id="swfStage">
<div class="tf-container" tf-swf tf-interface="flashInterface" tf-src="thin.swf" tf-min-version="11.0.0"></div>
</div>
</div>
<div class="col-md-5">
<form role="form">
<!-- Video Playback Controls -->
<div class="row">
<div class="form-group col-md-7">
<label>Select Preloaded Video:</label>
<select class="form-control" ng-model="myVideo" ng-init="myVideo = videos[2]" ng-change="changeVideo(myVideo)" ng-options="v for v in videos"><option></option></select>
</div>
</div>
<div class="row">
<div class="form-group col-md-7">
<button type="button" class="btn btn-primary" ng-click="pausePlaybackToggle()">Pause</button>
<button type="button" class="btn btn-primary" ng-click="playVideo()">Play</button>
</div>
</div>
<div class="row">
<div class="form-group col-md-7">
<label>Volume Control:</label>
<input style="width:50%;" type="range" id="slider" min="1" max="100" step="1" ng-model="volume" ng-change="changeVolume()">
</div>
</div>
<div class="row">
<div class="form-group col-md-8">
<label>Size Controls:</label><br/>
<button type="button" class="btn btn-primary" ng-click="changeVideoSize(1)">Small</button>
<button type="button" class="btn btn-primary" ng-click="changeVideoSize(2)">Medium</button>
<button type="button" class="btn btn-primary" ng-click="changeVideoSize(3)">Large</button>
</div>
</div>
</form>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
再次当应用程序在IE8中加载时,似乎模板加载(或启动...但我得到此错误)
使用像html5shiv或这个小片段之类的东西为IE8添加html5支持:
<script type="text/javascript">
document.createElement('header');
document.createElement('nav');
document.createElement('menu');
document.createElement('section');
document.createElement('article');
document.createElement('aside');
document.createElement('footer');
</script>
Run Code Online (Sandbox Code Playgroud)
在IE上修复"对象不支持此方法或属性"可能是一个野兽,因为它没有告诉你任何事情.它不会告诉你什么物体,它不会告诉你是什么性质,它不会告诉你什么方法最糟糕的是它不会告诉你哪里这实际上发生.看模式?实际上它是在说; 在某个地方发生了一些不好的事情.这是每个人都喜欢 IE 的原因之一.
添加上面的代码段可能已经解决了一个问题,但随后出现了另一个问题,产生了同样出色的错误消息.通过发布每个新的html片段修复错误消息的面包屑冒险可能需要很长时间,而应该与IE的帮助台讨论.他们有一台电话答录机,告诉你升级到他们新的蹩脚的其他问题.通过Stackoverflow解决这个问题就像用水枪在天空中射击卫星一样,在黑暗中,蒙上眼睛,喝醉了.
您可能会考虑的其他一些事情:
我想花点时间回答这个问题,其他人也有同样类型的事情发生.我试图polyFill,但没有工作,所以我尝试在IE9中运行代码,同时在IE8模式下运行,希望得到一个不同的错误.... Voila ....
null击中头部的钉子......它在JS中,这是因为我在做document.addListener().幸运的是,我能够巧妙地决定这个支持的功能不够重要,不能把我的头发拉出来,所以我在我的js中删除了那行...
其他所有工作......希望这可以为将来的某些人提供一些帮助,因为IE提供了出色的错误信息