首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只在提交完成时才查看Js滚动

只在提交完成时才查看Js滚动
EN

Stack Overflow用户
提问于 2022-07-19 15:25:45
回答 2查看 36关注 0票数 0

你好,我只想在提交完成承诺时才进入div

代码语言:javascript
运行
复制
function submitForm(form) {
    console.log("submitForm: ", form);

    return Promise.resolve(() => form.submit());
}

async function submitFm (form) {
    console.log("submitFm: ", form);
    await submitForm(form);
};

submitButton.addEventListener("click", () => {

            submitFm(form).then(() => {
                console.log("should display after submit is done!");
            });


        });

承诺会像这样工作,有人知道缺了什么吗?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-19 16:07:27

如果根据表单操作提交表单,则需要将状态传递到下一页。更简单的方法是在URL中使用锚,带有hashtag的URL将滚动到id是hashtag的元素。

例如:

代码语言:javascript
运行
复制
<form action="/post/data#id" method="post"></form>

如果基于ajax或fetch提交,则在提交时重定向URL,还可以使用hashtag。或者您可以通过Storage持久性数据,并控制下一页上的滚动操作。

如果您使用SPA框架,如Vue、React或其他。您可以使用路由器API来处理提交时的URL更改。或在表单提交成功时直接处理滚动。

票数 0
EN

Stack Overflow用户

发布于 2022-07-19 15:34:30

表单上的submit()方法触发表单提交(以及对结果的导航)。

一旦触发,submit()函数就会完成。

那么承诺就会解决。

然后执行then函数。

然后浏览器导航到新页面。

在网页中运行JavaScript不可能直接导致JavaScript在视图导航到的下一页中运行。

卸载当前页面将杀死在其中运行的任何JavaScript。下一页,无论是在链接的另一端,还是表单提交,还是对location.reload()的调用等等,都是一个空白页。页面中的任何JS都是从零开始运行的。

如果您想要在其中产生某种效果,则需要通过将消息传递到页面加载之间将持久的消息来实现。

示例包括URL或会话存储API上的查询字符串。

然后,您需要在下一页中使用JavaScript来检查该消息,对其进行操作,并可能清除它,这样它就不会影响下一个页面的加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73039668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档