Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从IE7中的iFrame访问父窗口中JS对象的属性?_Javascript_Iframe_Internet Explorer 7 - Fatal编程技术网

Javascript 如何从IE7中的iFrame访问父窗口中JS对象的属性?

Javascript 如何从IE7中的iFrame访问父窗口中JS对象的属性?,javascript,iframe,internet-explorer-7,Javascript,Iframe,Internet Explorer 7,我有一个名为CoolThing的JS对象,它存在于顶部窗口中 我有一个iFrame,与顶部窗口相同的域,需要访问CoolThing中的属性CoolProperty iFrame中访问CoolProperty的javascript在FF、webkit和IE8中运行良好,它是: <script type="text/javascript" charset="utf-8"> with(window.parent) { this.CoolThing.CoolProperty.co

我有一个名为CoolThing的JS对象,它存在于顶部窗口中

我有一个iFrame,与顶部窗口相同的域,需要访问CoolThing中的属性CoolProperty

iFrame中访问CoolProperty的javascript在FF、webkit和IE8中运行良好,它是:

<script type="text/javascript" charset="utf-8">
  with(window.parent) {
    this.CoolThing.CoolProperty.coolFunction();
  }
</script>

使用(window.parent){
this.CoolThing.CoolProperty.coolFunction();
}
在IE7中,我得到错误:
this.CoolThing.CoolProperty
为null或不是对象。我试着通过遍历CoolThing的属性来检查它,但根据IE7没有。它访问这个.CoolThing本身没有问题。。只是它似乎认为这个物体是空的

我在没有使用
with
语句的情况下尝试了上述操作,并尝试直接调用window.parent.CoolThing.CoolProperty,这在除IE7之外的所有浏览器中执行都没有问题,IE7会给出相同的错误

有什么建议吗?

这对我很有用:

父页面脚本:

<script type="text/javascript">
var CoolThing = { CoolProperty:function() { alert("foo alert");} };
</script>
<script type="text/javascript">
    with (parent)
    {
        CoolThing.CoolProperty();
    }
</script>

var CoolThing={CoolProperty:function(){alert(“foo alert”);};
子页面脚本:

<script type="text/javascript">
var CoolThing = { CoolProperty:function() { alert("foo alert");} };
</script>
<script type="text/javascript">
    with (parent)
    {
        CoolThing.CoolProperty();
    }
</script>

与(家长)
{
CoolThing.CoolProperty();
}
根据进一步阅读,我建议根本不要使用with(),只在子页面中使用以下内容:

<script type="text/javascript">
    parent.CoolThing.CoolProperty();
</script>

parent.CoolThing.CoolProperty();
事实上,根据,关键字带的
确实改变了范围,这也是使用它的原因之一。IE7可能会有不同的表现。

为什么不

parent.coolThing.coolWhatever();
或者如果您坚持将
一起使用:

with(parent) {
    coolThing.etCetera();
}

是的,但只用于查找现有成员,而不是声明新成员,因此更改“范围”确实很危险。@David:同意。我只是觉得讨论很有趣,也很密切,所以我加入了指向它的指针。不幸的是,我给出了一个非常简单的示例,它并没有真正说明我们使用的原因,而是为了得到“this”,我们使用它来定义属性以及jquery调用。事实证明,我能够在不使用with的情况下调用我想要的函数(我原以为我已经尝试过了,但它不起作用,但现在似乎起作用了),所以我只是在不使用with块的情况下重写代码。FWIW,“with”让我们写一些他妈的优雅的代码,如果不是讨厌的IE7,我们本可以侥幸逃脱。