- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题:
我正在尝试在引导模式 Pane 中加载 Angular JS 应用程序,但它在 Internet Explorer 上显示奇怪的行为(我们已在 IE9 和 8 上对其进行了测试)。
我们发现出现以下错误:
** 'JSON' 未定义** 对象错误未定义
SCRIPT5022: 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [["fn: function $locationWatch() {
var oldUrl = $browser.url();
var currentReplace = $location.$$replace;
if (!changeCounter || oldUrl != $location.absUrl()) {
changeCounter++;
$rootScope.$evalAsync(function() {
if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).
defaultPrevented) {
$location.$$parse(oldUrl);
} else {
$browser.url($location.absUrl(), currentReplace);
afterLocationChange(oldUrl);
}
});
}
$location.$$replace = false;
return changeCounter;
}; newVal: 7; oldVal: 6"],["fn: function $locationWatch() {
var oldUrl = $browser.url();
var currentReplace = $location.$$replace;
if (!changeCounter || oldUrl != $location.absUrl()) {
changeCounter++;
$rootScope.$evalAsync(function() {
if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).
defaultPrevented) {
$location.$$parse(oldUrl);
} else {
$browser.url($location.absUrl(), currentReplace);
afterLocationChange(oldUrl);
}
});
}
$location.$$replace = false;
return changeCounter;
}; newVal: 8; oldVal: 7"],["fn: function $locationWatch() {
var oldUrl = $browser.url();
var currentReplace = $location.$$replace;
if (!changeCounter || oldUrl != $location.absUrl()) {
changeCounter++;
$rootScope.$evalAsync(function() {
if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).
defaultPrevented) {
$location.$$parse(oldUrl);
} else {
$browser.url($location.absUrl(), currentReplace);
afterLocationChange(oldUrl);
}
});
}
$location.$$replace = false;
return changeCounter;
}; newVal: 9; oldVal: 8"],["fn: function $locationWatch() {
var oldUrl = $browser.url();
var currentReplace = $location.$$replace;
if (!changeCounter || oldUrl != $location.absUrl()) {
changeCounter++;
$rootScope.$evalAsync(function() {
if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).
defaultPrevented) {
$location.$$parse(oldUrl);
} else {
$browser.url($location.absUrl(), currentReplace);
afterLocationChange(oldUrl);
}
});
}
$location.$$replace = false;
return changeCounter;
}; newVal: 10; oldVal: 9"],["fn: function $locationWatch() {
var oldUrl = $browser.url();
var currentReplace = $location.$$replace;
if (!changeCounter || oldUrl != $location.absUrl()) {
changeCounter++;
$rootScope.$evalAsync(function() {
if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl).
defaultPrevented) {
$location.$$parse(oldUrl);
} else {
$browser.url($location.absUrl(), currentReplace);
afterLocationChange(oldUrl);
}
});
}
$location.$$replace = false;
return changeCounter;
}; newVal: 11; oldVal: 10"]]
以及许多其他错误
所以,我们发现IE上有3个问题:1) JSON 不可用2) Bootstrap应用程序的问题3)问题渲染 View
在阅读 Angular JS 文档和 StackOverflow 中的大量线程之后,例如:
我们发现所有线程之间都有一些共同点(AngulaJS IE 指南中也提到过):* 包括 IE 的 JSON2/JSON3 pollyfills* 使用 ie-shiv,并预先声明自定义标签(我们使用自定义 typeahead 指令,限制:'E',替换:true)* 使用其他IE特定指令
所以,我做了以下修改:
var markup = '<div id="ng-app" class="ng-app:myapp" ng-app="myapp" xmlns:ng="http://angularjs.org"><div ng-controller="MyAppAppCtrl"><div ng-view></div></div></div>';
jQuery('#works-modal').html(markup);
angular.bootstrap(jQuery('#ng-app'), ['myapp']);
jQuery('#works-modal').modal('show');
实现上述更改后,我仍然得到:
Error: 10 $digest() iterations reached. Aborting!
https://github.com/angular/angular.js/issues/1417
尝试渲染 View 时,应用程序正在重定向到主页。所以我尝试进行以下建议的更改:
https://github.com/RobbinHabermehl/angular.js/commit/c801f91a25b9be6f5b1163c012e63c84cc6a1359
现在,我不再收到错误,当我单击链接显示模态对话框时,它会显示弹出窗口一秒钟,然后重定向到主页。
如果我设置:
$locationProvider.html5Mode(false)
.hashPrefix('!');
效果很好。有人面临类似的问题吗?如有任何帮助,我们将不胜感激。
更新我还在 Angular JS Github bug 列表上报告了这个问题,他们告诉我他们已经在 1.2 版本上修复了这个问题:
https://github.com/angular/angular.js/issues/3397
如果可以解决我的问题,我会检查并更新此线程。
更新
我更新了我的 Angular 版本,这似乎解决了“已达到 10 $digest() 迭代。正在中止!”的问题,但是,它似乎仍然会触发 URL 更改,导致它重定向到主页。
让我在这里解释一下我的情况,以便其他人可以建议我这是否与此完全相关:
我有一个页面说:http://example.com/users/myCollection.html在此页面上,当用户单击页面上的某个链接时,我正在 Bootstrap Modal 对话框中加载我的 AngularJS 应用程序。 Modal 中加载的应用程序的 Angular 路径为:/mywork/find
升级 Angular 版本后,现在 Modal 似乎会加载应用程序一秒钟,然后发生重定向,然后转到主页。
仅供引用,我也在用于启动 Angular 应用程序的页面上使用 jQuery,是否有可能因此而发生冲突?
谢谢,拉维什
最佳答案
我已经总结了上面的问题,以及解决这些问题所采取的步骤,让我再次总结,然后我将总结问题“已达到 10 $digest() 迭代。正在中止!“:
步骤 1) IE 上引导应用程序出现问题
IE 上的引导应用程序出现问题。我们正在 Bootstrap 模式对话框中加载 Angular 应用程序,并手动引导 Angular 应用程序。由于我们收到渲染 View 错误,我们怀疑它与以下任一相关:我们错过了我们“心爱的”IE 不喜欢的东西,或者,它根本不喜欢我的自定义指令,或者我们与自定义指令一起使用的 Hogan 引擎指示。我通过阅读特定的 Angular JS 文档和一个 Stackoverflow 线程解决了这些问题。
我强烈建议关注正在或即将在 Angular JS 上工作的每个人,如果您想在 IE 上使用,请阅读以下内容:
步骤 2)
在第 1 步之后,我们能够让应用程序以 html5mode(false) 运行,但是 html5mode(true) 对我们来说仍然是一个问题。经过一些调试并添加一些 console.log 后,我们意识到即使使用 html5mode(false),应用程序也会被引导两次。两次?但是,我们手动引导应用程序。以下是我用于引导 Angular 应用程序的模板:
var markup = '<div id="ng-app" class="ng-app:myapp" ng-app="myapp" xmlns:ng="http://angularjs.org"><div ng-controller="MyAppAppCtrl"><div ng-view></div></div></div>';
jQuery('#works-modal').html(markup);
angular.bootstrap(jQuery('#ng-app'), ['myapp']);
jQuery('#works-modal').modal('show');
我们修改了上面的模板,如下所示:
var markup = '<div id="ng-app" ng-app="myapp" xmlns:ng="http://angularjs.org"><div ng-controller="MyAppAppCtrl"><div ng-view></div></div></div>';
jQuery('#works-modal').html(markup);
angular.bootstrap(jQuery('#ng-app'), ['myapp']);
jQuery('#works-modal').modal('show');
添加了 onclick="return false;"用于启动应用程序的链接上的 href="#"。
注意:如果您的应用程序中有超链接,请确保正确处理它们,并且它们正在执行您希望它们执行的操作,因为“href”可能会导致位置更改,从而导致位置更改您的应用程序可能不喜欢。
第3步)更新Angular JS版本
一些 Angular JS Github 错误页面中提到了一些可能的修复:
以下要点中提到了这样的修复:https://github.com/RobbinHabermehl/angular.js/commit/c801f91a25b9be6f5b1163c012e63c84cc6a1359
但是,我对修补核心库的想法感到不舒服,更新核心库有其自己的缺点,即您可能会重构应用程序使用的部分代码,该库已被弃用,但是,如果存在严重错误修复(比如修复我们面临的问题)和改进,这总是一个尝试。因此,我们将转向 Angular JS 的最新稳定版本。
现在,我们不再收到错误,并且能够在所有浏览器上引导我们的应用程序(是的,甚至在 OMG IE7 上;))。
一切都很好,对吧?好吧,在升级了 Angular 的版本后,现在,Modal 似乎加载了应用程序一秒钟,然后,发生了重定向,它进入了主页。
但是,Angular JS $location 服务指南($location 服务配置以及 Hashbang 和 HTML5 模式)对此进行了解释:http://code.angularjs.org/1.2.14/docs/guide/dev_guide.services.$location
HashBang(或 HTML5 后备模式)需要服务器端配置,这是一种服务器端“hack”。如果你“真的”想要这样的东西,或者不想要这样的东西,这真的取决于你。
所以,现在一切都好:)
希望这对遇到此问题或类似问题的任何人有所帮助。
Angular JS 再次震撼;)
关于internet-explorer - SCRIPT5022 : 10 $digest() iterations reached. 正在中止!并重定向到index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276261/
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!