1

我有一个 GWT 网络应用程序,它几乎有一个完整的页面谷歌地图窗口。在地图内,我有包含链接的信息窗口。我想要做的是使用 jquery 工具覆盖(http://flowplayer.org/tools/overlay/apple.html)打开覆盖并在单击信息窗口内的链接后将其显示在地图顶部。

现在,链接源是动态生成的,它托管在不同的服务器上,所以我必须在 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 工具通过打开任何将 id 分配给“rel”值的 div 来工作,但是因为我在 GWT 中的 LandingPage.html 上有我的 javascript/jquery,所以两者之间似乎存在某种脱节,因为覆盖是从未添加到窗口中。

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

如您所见,其他叠加层可以正常工作,但是一旦您单击信息窗口并尝试查看菜单,它将仅使用 href 在该窗口中打开 url。

有谁知道可以让我实现目标的解决方案?谢谢!

4

2 回答 2

2

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

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

注意调用后的 return false changeSource。或者您可以修改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(..);"
于 2010-05-28T02:09:14.600 回答
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');" 这似乎工作正常。

谢谢。

于 2010-05-28T04:54:01.977 回答