gpt4 book ai didi

jquery - Parent.location.assign(url) 无法在 fancybox iframe 中工作

转载 作者:行者123 更新时间:2023-12-01 07:57:47 25 4
gpt4 key购买 nike

我正在尝试使用用户在 fancybox 中单击的 url 链接重新加载浏览器,以便在 fancybox 关闭后父窗口将转到该 url,但前提是单击该链接,而不是在 fancybox 正常关闭时。我在 fancybox 中打开一个 asp 文件,它使用 google map api 来显示交互式 map 。我正在测试当单击标记时,信息窗口会打开一个链接,这是一个新位置。我已经关闭 fancybox 并重新加载父窗口,但由于某种原因,我无法将父位置更改为新的 url!我觉得它应该有效,因为其他一切都有效,但这让我完全困惑。

我的 asp 文件中的代码使用谷歌地图 api,如下所示:

    var contentstring = document.createElement("div");
contentstring.innerHTML = '<div id=\"content\">'+
'<div id=\"siteNotice\">'+'</div>'+
'<div id=\"bodyContent\">'+'<b>'+'<a href=\'http://www.lookathawaii.com/proddetail.asp?prod=96816-DIAMOND-HEAD-STATE-MONUMENT\' onclick=\"parent.$.fancybox.close(); parent.location.assign(\'http://www.lookathawaii.com/proddetail.asp?prod=96816-DIAMOND-HEAD-STATE-MONUMENT\'); parent.location.reload(true); return true\">'+'Diamond Head State Monument, Park and Trail'+'</a>'+'</b>'+'</div>'+
'</div>';

contentstring.className = "map-popup";
contentstring.style.height = "60px";
var infowindow = new google.maps.InfoWindow({content: contentstring});
google.maps.event.addListener(marker9, 'click', function() {
infowindow.open(map,marker9);
});

我注意到的另一个奇怪的事情是,虽然我在 fancybox $.ready 函数中创建了 afterClose 构造,但当我强制 fancybox 用parent.$.fancybox.close() 关闭时,它不会被调用,但它会被调用如果我正常关闭 fancybox 。我应该补充一点,上面的代码是在我的 asp 文件的 head 部分而不是正文中调用的。我整夜都在破解这个东西,但我仍然不明白出了什么问题。我将非常感谢任何帮助使其正常工作。

总而言之,fancybox 中关闭并重新加载新 URL 的调用是:

    parent.$.fancybox.close();
parent.location.assign(new-url);
parent.location.reload(true);

但由于某种原因,fancybox 关闭并使用现有/旧的 url 重新加载父级。

编辑 - 我刚刚注意到在 Google Chrome 中,回调函数 afterClose() 被调用,但在 IE11 中它没有被调用。对于这两种浏览器,fancybox 都会关闭并重新加载,但它们都不会分配新的 url。这是我想使用 fancybox 而不是新弹出窗口的主要原因。

我还忘了提及,我正在测试 google map api 的网址位于 http://www.lookathawaii.com/proddetail.asp?prod=96815-THE-FAT-GREEK单击“ map ”选项卡,然后单击 map 图像(然后将 map 向西北拖动,这样您就可以看到东南方的钻石头,然后单击钻石头中间的标记以查看弹出的信息窗口带有应该将用户带到我的钻石头页面的链接)。另一件事是,fancybox 是从我正在测试的 url 中调用的,如下所示:

    <a href="maps/96815-test1.asp?prod=96815-THE-FAT-GREEK&lat=21.284329&lng=-157.836873" class="fancybox fancybox.iframe">

最佳答案

我通过对原始代码进行很小的更改就解决了这个问题。我使用了最初的 3 次调用:

    parent.$.fancybox.close();
parent.location.assign(new-url);
parent.location.reload(true);

根据我读到的很多人的说法。然而,我了解到的是,调用“reload(true)”是不必要的,而且实际上会因为某种原因把事情搞砸。当我测试这个订单时:

    parent.location.assign(new-url);
parent.$.fancybox.close();

它工作得很好,并使用新的 url 重新加载了父窗口!所以我在内容字符串中做了简单的更改,它再次完美运行!现在,我创建了一个包含一些测试位置的 map ,用户可以通过 map 前往我网站上的任何位置(在 IE11 和 Chrome 中测试)。

我不确定为什么建议的前 3 个调用不起作用,也许是浏览器问题,但必要的两个调用是“assign(new-url)”和“close()”确切的顺序。 fancybox 关闭后浏览器将自动刷新,无需调用“reload()”。

关于jquery - Parent.location.assign(url) 无法在 fancybox iframe 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22737737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com