ie9中的设置对象“对象”不支持此操作
Setting object in IE 9 "Object doesn't support this action"
尝试将对象的属性设置为新对象,IE 9给了我一个奇怪的错误"Object Doesn't support this action"我不明白为什么只有这个浏览器在抱怨。
http://jsfiddle.net/billpull/QNm6f/1/我按照它被解析的顺序写代码,因为从技术上讲,浏览器会在对象存在之前到达这部分,但当代码实际执行时,它确实存在。
var project = {};
project.viewModels = {};
project.myViewLocator = {
viewOne: null,
viewTwo: null
};
$(function () {
project.myViewLocator.viewOne = new project.viewModels.ViewOneModel();
});
project.viewModels.ViewOneModel = function () {
// some logic
};
您的jsFiddle有这个排序问题,因为您在左面板中为onload
设置了它。这意味着当你调用:
$(function () {
project.myViewLocator.viewOne = new project.viewModels.ViewOneModel();
});
文档已经加载,因此它立即执行回调,因此ViewOneModel()
尚未定义。
如果你改变左面板为"No wrap in <body>
",那么排序问题就消失了,因为文档还没有准备好,回调函数直到构造函数定义后才被调用。
如果在不同浏览器之间看到这个时间的差异,那可能是由于jQuery在不同浏览器中实现DOMReady方法的方式不同。但是,在所有情况下,等待运行代码直到onload
已经触发将意味着DOM已经准备好,DOMReady代码可能已经触发或可能在注册时立即触发。
最简单的建议是在使用任何函数之前定义它,而不必担心这样的时间问题。
进一步信息:在跟踪通过jQuery实现.ready()
(或你正在使用的形式),你可以找到这个代码块:
// Do we need to add the callbacks to the
// current firing batch?
if ( firing ) {
firingLength = list.length;
// With memory, if we're not firing then
// we should call right away
} else if ( memory ) {
firingStart = start;
fire( memory );
}
显示(你可以阅读注释),如果DOM已经准备好了,jQuery调用回调立即当你注册它
您正在注册dom ready
回调,以便在定义ViewOneModel
之前初始化它。我猜IE9在定义之前执行回调,因为DOM已经准备好了。
假设$()是一个异步方法。然而,实际上,如果dom在调用它之前就准备好了,这是一个错误的假设。
改变顺序也可以:
var project = {};
project.viewModels = {};
project.myViewLocator = {
viewOne: null,
viewTwo: null
};
project.viewModels.ViewOneModel = function () {
// some logic
};
$(function () {
project.myViewLocator.viewOne = new project.viewModels.ViewOneModel();
});
试试这个,它应该工作得很好,问题是你正在调用一个对象上的函数,然后它被定义。
这里是jsffidle
var project = {};
project.viewModels = {};
project.myViewLocator = {
viewOne: null,
viewTwo: null
};
$(document).ready(function() {
$(function () {
project.myViewLocator.viewOne = new project.viewModels.ViewOneModel();
});
project.viewModels.ViewOneModel = function () {
// some logic
alert('it s working fine ...');
};
})
- 对象不支持属性或方法“自动完成”
- 对象不支持对象IE 8
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- JSHint 错误“对象不支持此属性或方法”用于 javascript 闭包
- 对象不支持属性或方法“确认”
- 对象不支持属性或方法“jscomp_symbol_iterator0”
- 对象不支持 igGrid 中的属性或方法“_super”
- 下拉 Javascript 错误:对象不支持属性或方法“匹配”
- 运行时错误:对象不支持属性或方法
- 对象不支持在调用 indexOf 定义的数组时 IE8 中未定义的此属性或方法
- 对象不支持此属性或方法 Rails Windows 64 位
- IE9:对象不支持属性“is”
- Jquery说该对象不支持“每个”
- 对象不支持 IE7 jQuery 中的此属性或方法错误
- 对象不支持此属性或方法“同位素”
- 对象不支持此属性或方法 - IE 7/8
- IE 错误 .JavaScript 运行时错误:对象不支持属性或方法“preventDefault”
- 使用此 javascript 在 IE7 中收到“对象不支持此属性或方法”错误,以及选项卡未正确定位的问题
- 在 IE6 中运行时添加 CSS 规则 - 对象不支持此属性或方法
- 对象不支持属性或方法“jtable”