【问题标题】:onClick iframe redirect to the src urlonClick iframe 重定向到 src url
【发布时间】:2020-10-12 08:50:47
【问题描述】:

我正在尝试制作一个场景,如果有人点击 iframe,它将打开一个新窗口来检查 Web 浏览器选项卡上的相同 URL。但 iframe 上的滚动和其他鼠标事件不会影响它。

我尝试了不同的方法,但没有任何效果

方法1:尝试获取iframe本身的onClick事件,但问题是跨域持续存在

方法 2:尝试将 onClick 事件提供给 iframe 的父元素,但由于 iframe 的指针事件启用,它不会让父 onClick 工作。

方法 3:尝试在 iframe 上方叠加锚标记。它确实有效,但它停止了 iframe 滚动。

这是我的代码:

<div>
   <iframe src="https://fr.wikipedia.org/wiki/Main_Page"></iframe>
   <a href="https://fr.wikipedia.org/wiki/Main_Page" target="_blank"></a>
</div>
iframe {
  width: 100%;
  height: 100vh;
  pointer-events: none;
}
a {  
 width: 100%;
 height: 100vh;
 position: absolute;
 top: 0;
 left: 0;
}

小提琴:here

是否可以通过跨域URL实现这个场景?

【问题讨论】:

    标签: javascript html npm iframe


    【解决方案1】:

    您的代码不起作用,因为您设置了pointer-events: none;。您可以这样做,即单击“按钮叠加层”并使用 javascript 重定向用户,一旦单击它就会“删除”按钮叠加层。

    在我的情况下,我将背景设置为红色只是为了让它清楚,我没有删除按钮,我只是隐藏它。您可以根据自己的用例进行调整。另请注意,此脚本仅允许其中一个 iframe 和按钮。如果您有更多脚本必须修改以循环并将 eventListeners 添加到按钮并查看其父级以在容器上添加类(或者如果您只是删除按钮)

    const redirectAction = document.querySelector('.js-open-url')
    redirectAction.addEventListener('click', function() {
      window.open(
        redirectAction.dataset.href, 
        '_blank'
      )
      
      document.querySelector('.container').classList.add('container--is-open')
    })
    .container {
      position: relative;
    }
    
    iframe {
      width: 100%;
      height: 100vh;
    }
    
    .button {
      width: 100%;
      height: 100vh;
      position: absolute;
      top: 0;
      left: 0;
      z-index: 1;
      background-color: red;
    }
    
    .container--is-open .button {
      display: none;
    }
    <div class="container">
      <iframe src="https://fr.wikipedia.org/wiki/Main_Page"></iframe>
      <button class="button js-open-url" data-href="https://fr.wikipedia.org/wiki/Main_Page"></button>
    </div>

    【讨论】:

    • 谢谢@Dejan.S,但它只会工作一次,之后它将删除覆盖。另外,问题是如果我在 iframe 上进行覆盖,它将不允许在 iframe 内滚动。与我在方法 3 中提到的相同。如果我向父级提供 onClick 并使 iframe 指针事件没有,那么它也可以通过重定向到另一个页面来工作,但问题是因为没有指针事件,它会停止 iframe 内的滚动,如果可能的话,我试图让两者同时工作。
    • @DevProf 不确定我得到你想要做什么。我的代码将有一个覆盖并单击它将打开一个新选项卡,它将删除覆盖并让您在 iframe 内使用滚动。这不是你想要的吗?我错过了一个“,”所以也许这打破了覆盖和重定向。现在已经解决了。
    • 我想要同样的,但假设我没有点击 iframe 只是想滚动,在这种情况下,覆盖会阻止 iframe 滚动。我正在尝试在 iframe 中实现我可以滚动以及如果我单击 iframe 中的任何位置它会将我重定向到该 src URL。
    猜你喜欢
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多