防止 IFrame 导航

2023-12-27

我用一个iframe通过 JS 将 HTML 字符串写入其内容文档来显示 HTML 电子邮件内容。我不希望用户在其中导航iframe如果他点击显示的电子邮件中的链接。现在我有这些选择:

  1. 在新的浏览器窗口或选项卡中打开链接(首选)
  2. 阻止所有导航(次优,仅当没有其他选项时)
  3. 我不知道更好的选择?

我怎样才能实现这两个选项中的任何一个?

我知道HTML5介绍了一个sandbox属性,但不幸的是,这只适用于Chrome and Safari,所以这不是一个选择。


如果 iframe 来自不同的源,此方法将通过重置 iframe 源(如果发生更改)来阻止导航:

  var $iframe = $('iframe');
  var iframeUrl = 'http://example.com/foo';
  var iframeLoaded = false;
  $iframe.on('load', function () {
    if (!iframeLoaded) {  # Allow initial load of iframe.
      iframeLoaded = true;
      return;
    }

    # Reset iframe location back to original source to prevent navigation.
    iframeLoaded = false;
    $iframe[0].src = iframeUrl;
  });

不幸的是,没有办法检测到startiframe 加载的时间,因此它会在返回之前短暂闪烁新内容。另外,请注意,这会破坏浏览器后退按钮。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 IFrame 导航 的相关文章

随机推荐