首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Earth Balloon Reload -客户端和插件

Google Earth Balloon Reload -客户端和插件
EN

Stack Overflow用户
提问于 2013-08-06 06:41:43
回答 1查看 301关注 0票数 1

在我开始我的实际问题之前,先说一句:

几个月前,我遇到了一个问题,当我收到AJAX调用时(大约每分钟两次),我需要通过javascript动态调整Google Earth气球的大小。有时,每次调用只需要将气球增加一到两个像素,这并不是一个大问题。主要的问题是,有些时候(很多时候),我得到的数据会要求气球变得更大,这会导致滚动条出现(对我工作的公司来说,这是一个不受欢迎的影响)。最终,在几天的时间里,我发现了一种非常老套的方法,可以让气球按我想要的方式调整大小。在获得我的数据并用新数据重新填充气球后,我将调用以下代码:

代码语言:javascript
复制
setTimeout(window.location.reload, 250);

我有一个理论,这是因为在Google Earth应用程序(客户端和插件版本)中,我可以右键单击气球,然后单击“重新加载”,气球就会按我想要的方式调整大小。显然,考虑到如果我在普通浏览器中使用相同的代码,页面会无限地重新加载,所以我还必须找出一种方法来确定我是在Google Bubble中还是在这个网页的浏览器版本中(我找到了一种方法,但它与我最终要访问的问题并不重要或无关)。现在办公室里的事情不那么混乱了,我想找出这到底是为什么。

最后,我的问题是: Google Earth API是重新定义了窗口或位置对象,还是仅仅重新定义了window.location.reload的工作方式?

我使用的是Google Earth Client v6.1.0.5001和Google Earth插件v6.2.2.6613

EN

回答 1

Stack Overflow用户

发布于 2013-08-06 20:27:53

Google Earth API是重新定义了窗口或位置对象,还是仅仅重新定义了window.location.reload的工作方式?

不,它不会重新定义任何东西,它只是页面框架内的插件。基本上,如果您在一个帧内,window指的是当前帧,parent指的是当前帧的父窗口,top指的是窗口层次中最顶层的窗口。

当您第一次加载插件时,通常将createInstance方法指向页面上的div或其他元素。例如:

代码语言:javascript
复制
<div id='map3d'></div>

然而,一旦加载了插件,如果你查看页面的标记,你可以看到插件将一个iframe注入到那个元素中。所以你有这样的东西..。

代码语言:javascript
复制
<div id='map3d' style='...'>
  <div style='...'>
    <div style='...'>
      <iframe src="http://www.google.com/earth/plugin/..">
        <html>
          ...

因此,当您引用window对象时,您引用的是该框架,而不是父窗口。

尝试调用window.top.location.reload();window.location.reload();来显示差异。

很明显,这个黑客攻击有点可疑

没有什么可疑的事情发生,这是基本的加价。你所做的仅仅是告诉当前的frame而不是最上面的window去重新加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18069005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档