2010-05-28 123 views
1

我有一个GWT网页应用程序,有一个几乎完整的Google地图窗口。在地图内部,我拥有包含链接的infowindows。我想要做的就是使用jQuery工具叠加层(http://flowplayer.org/tools/overlay/apple.html)打开叠加层并在点击信息窗口内的链接后将其显示在地图顶部。使用GWT中的jQuery工具 - 有没有办法让交流?

现在,链接源是动态生成的,它托管在不同的服务器上,所以我必须在iframe中打开它并在打开之前设置iframe的源。这似乎很简单,因为我只有在页面上1个IFRAME:

function changeSource(url){ 
     $("#menuIFrame").attr("src",url); 
    } 

要打开覆盖(这是在释放鼠标完成)之前调用这个,我创建了谷歌地图下面的元素通过GWT信息窗口:

<a href="http://whatever.com/menu/" onClick="changeSource('http://whatever.com/menu/');" rel=#menu"> View menu </a> 

jQuery的工具的工作原理是打开任何div有分配到“相对”的id的值,而是因为我有我的GWT LandingPage.html我的JavaScript/jQuery的,似乎存在某种脱节因为覆盖层从未添加到窗口中。

这里是我的应用程序:http://truxmapper.appspot.com/

正如你所看到的,其他的重叠将正常工作,但一旦你点击一个信息窗口,并尝试查看菜单,它只会使用在href在打开网址窗口。

有谁知道一个解决方案,可以让我完成我的目标?谢谢!

+0

我仍然无法获得释放属性来触发任何形式的动作。 – 2010-05-28 01:56:55

回答

1

这个答案与一些资料,我发现有用的为我提供了,但它没有包括“解决方案”,我发现。

我无法找到一种方法来从GWT中的链接触发jQuery工具使用的“a [rel]”jQuery选择器。但是,因为它是javascript函数,所以我简单地声明覆盖图:

$(function() { 
$("#menu").overlay({effect: 'apple', mask: 'gray'});  

});

,改变了changeSource函数:现在

function changeSource(url){ 
    $("#menuIFrame").attr("src",url); 
    $("#menu").overlay().load(); 
} 

,从内GWT链路HREF = “JavaScript的:changeSource( 'menu_url.html');”这似乎是正常工作。

谢谢。

+0

很高兴你的工作。您网站上的变化是? – Anurag 2010-05-28 05:22:24

2

点击链接将打开当前窗口中的页面,因为没有任何东西可以阻止它。该链接的onclick处理程序需要返回false以防止发生默认操作(打开url)。它应该看起来像:

<a href=".." onClick="changeSource(..); return false;" rel=#menu">View menu</a> 

注意调用changeSource后返回false。或者,您可以修改changeSource以返回值本身,并简单地返回任何changeSource返回的值。该changeSource功能看起来像:

function changeSource() { 
    // do some work 
    return false; 
} 

链接变为:

<a href=".." onClick="return changeSource(..);" rel=#menu">View menu</a> 

这从导航离开停止页面,并从于其预期应该工作。如果没有,这很可能是jQuery工具的问题。在我的测试中,默认情况下弹出窗口并未显示,因为<div class="menu_overlay">..</div>被CSS隐藏。我做了一些进一步的两轮牛车通过进一步修改的onClick以显示它:

onClick="$('.menu_overlay').show(); return changeSource(..);" 
+0

我打算对你的帖子发表评论,但是我是通过自己的回答意外创建的。我做的方式在下面给出。 – 2010-05-28 04:54:43

相关问题