首页 > 解决方案 > React - 如何使嵌入式多步谷歌表单(iframe)仅在单击“下一步”或“提交”按钮时滚动到顶部

问题描述

我有一个联系页面,其中嵌入了一个多步骤的谷歌表单(作为 iframe)。表单的第一页/步骤很长,因此当单击“下一步”按钮时,我需要视口自动滚动回联系表单的顶部,但我不希望在用户访问联系页面本身时执行此操作。我目前的代码如下:

import React from "react";

const Form = () => {
  const scrollToTop = () => {
    if (window.myFrameChange !== undefined) {
      window.parent.document.getElementById("form").scrollIntoView();
    }
    window.myFrameChange = true;
  };

  return (
    <iframe
      id="form"
      title="Enrollment Form"
      src="..."
      width="100%"
      height="1250"
      frameBorder="0"
      marginHeight="0"
      marginWidth="0"
      onLoad={scrollToTop}
    >
      Loading…
    </iframe>
  );
};

export default Form;

这在初始页面加载时按预期工作(不会跳转到表单)。但是,如果用户访问联系页面,然后离开然后重新访问该页面,则视口将跳转到联系表单。

是否可以通过使用 useEffect 挂钩在页面加载时在父窗口上设置 onload 处理程序来解决此问题,然后在 iframe 上设置 onload 处理程序?还是有更好的方法?

如果是这样,有人可以用正确的语法帮助我(或者如果我在错误的树上吠叫任何其他建议)!

谢谢

标签: javascriptreactjsiframegoogle-forms

解决方案


推荐阅读