【问题标题】:Fancybox messing up browser history with 'iframe' settingFancybox 使用“iframe”设置破坏浏览器历史记录
【发布时间】:2011-03-09 19:02:26
【问题描述】:

我正在使用带有 iframe 设置的 Fancybox 1.3.4,该设置在另一个页面中加载到 iframe 中。

$(".fancy").click(function(){
    return false;
});

$(".fancy").fancybox({
    type: 'iframe',
    width: 800,
    height: 500,
    overlayOpacity: 0.8,
    overlayColor: '#222',
    showNavArrows: false
});

链接如下所示

<a id="map_link" class="fancy" href="http://example.com/page">link</a>

问题是,每当我单击链接时,它都会正确加载 iframe,但也会强制父页面再次导航到自身。所以这意味着如果我打开和关闭fancybox 10 次,我现在在父页面的浏览器历史记录中还有10 个项目。在所有浏览器中进行了测试,并且遇到了全面的问题。

编辑Test case
这几乎模仿了我在我的网站上的内容,fancybox-wise。使用 jQuery 1.5、最新的 fancybox 并在 Chrome 11 和 Firefox 3.6.14 中进行测试。当我点击该链接 5 次时,我的浏览历史记录中会出现 5 个父框架站点的实例。

【问题讨论】:

  • return false; 更好的是 jQuery 的 event.preventDefault()。 (link to API)
  • 你能添加一个测试用例的工作jsFiddle吗?
  • @Exelian 添加了测试用例,在我测试的浏览器中jsFiddle还是有问题。

标签: javascript jquery fancybox


【解决方案1】:

如果你打开unpacked source code for FancyBox,你会发现

content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');

在第 946 行。如果您将其注释掉,它将解决您遇到的问题。至于它的作用,它看起来与an IE 'feature' 有关。但是,我不确定为什么有必要。

【讨论】:

  • 如果这就是答案,那就太好了!
猜你喜欢
  • 1970-01-01
  • 2016-01-09
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
相关资源
最近更新 更多