2010-03-23 104 views
0

我有一个JavaScript对象,有一些属性。可以说:在IE6中访问JavaScript对象属性的方法

var haystack = { 
    foo: {value: "fooooo"}, 
    bar: {value: "baaaaa"} 
}; 

现在,我想访问其中的一个属性,但我不知道哪一个。幸运的是,这个变量的作用:

var needle = "foo"; 

在现代浏览器中我似乎能够做到以下几点,它的工作原理:

haystack[needle].value; # returns "fooooo" 

但在IE6它抛出一个不稳定,haystack[...] is null or not an object

有没有办法实现我想在IE6中实现的目标?如果是这样,怎么会这样?


编辑 - 响应下面的留言中加入更多的信息.​​..


我想实现实际上与CKEditor的。我没有写过一个在iframe中打开的插件图像管理器。

然后,我想要实现的是将选定的图像放回到CKEditor的正确实例中(并且在某些页面上可以有多个实例)。

我已经做了什么(我知道这是一个丑陋的黑客攻击),当iframe被打开时,我在它旁边放置了一个带有实例名称的隐藏字段。所以父页面包含一些类似这样的标记:

<iframe><!-- Image manager --></iframe> 
<input type="hidden" id="ckinstance" value="article_body" /> 

那么,选择图像时要插入我有一些JavaScript看起来像这样的iframe中:

var CKEDITOR = window.parent.CKEDITOR; 
var instance = window.parent.$('#ckinstance').val(); 
var img = '<img src="/whatevers/been/selected" />'; 
CKEDITOR.instances[instance].insertHtml(img); 
window.parent.$.modal.close(); 

这工作正常在FF,铬等,只是IE6与抱怨:

CKEDITOR.instances[...] is null or not an object. 

EDIT 2

我已经只是做了一些调试,实际上它看起来像IE6在window.parent.$('#ckinstance').val()上失败,并且返回undefined。

所以我描述的原始问题根本就不是问题。

还需要什么帮助:)

+3

没有理由不会工作,它方括号表示不是现代的..你能提供一个例子吗? – meandmycode 2010-03-23 18:26:28

+0

是的,这也应该在IE6中工作。你能举一个例子吗? – 2010-03-23 18:29:01

+1

SSCCE给你:http://jsbin.com/uzomo3/。在IE6中运行良好。 – 2010-03-23 18:41:38

回答

1

当你花了几个小时抓耳挠腮过的东西,才实现了解决方案,这是相当恼人的是:

Tools > Internet Options > Delete Files