如何使用javascript重定向上一页

如何使用javascript重定向上一页,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,重定向到上一页后如何重定向上一页。 在表格提交后,我将表格重定向到感谢页面,但有时我想重定向上一页 下面是我正在使用的代码 <script> document.addEventListener( 'wpcf7mailsent', function( event ) { //location = 'abc.com1/thank-you/'; if ( '17615' == event.detail.contactFormId ) { } else

重定向到上一页后如何重定向上一页。 在表格提交后,我将表格重定向到感谢页面,但有时我想重定向上一页

下面是我正在使用的代码

<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
    //location = 'abc.com1/thank-you/';
     if ( '17615' == event.detail.contactFormId ) { 
     } 
    else if( '19110' == event.detail.contactFormId ){
        location = 'abc.com1/thank-you-broucher/';
    }
    else {
         location = 'abc.com1/thank-you/';
     }
}, false );
</script>

document.addEventListener('wpcf7mailsent',函数(事件){
//地点='abc.com1/thank-you/';
如果('17615'==event.detail.contactFormId){
} 
else if('19110'==event.detail.contactFormId){
地点='abc.com1/谢谢你,布鲁彻/';
}
否则{
地点='abc.com1/thank-you/';
}
},假);
定位重定向后,我想再次重定向到我的第一个原始页面

如果有人有想法,请告诉我

使用

window.history.back();

您可以通过以下几种方式完成:

// Javascript directly in the href    
<a href="javascript: history.go(-1)">Go Back</a>
最后,您可以创建一个函数

<script>
function goBack() {
    history.go(-1);
}
</script>
<button onclick="goBack()">Go Back</button>
由于您使用WordPress,我建议您使用functions.php文件进行此操作,并添加一个带有重定向函数的过滤器,但由于您要求如何使用javascript进行此操作,您需要检查感谢页面以获取页面id-[id-NUMBER]它在上面的脚本的主体标记上生成的类需要一个条件来检测该类是否存在于主体上(假设该脚本已加载到整个站点上):

<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
    //location = 'abc.com1/thank-you/';
     if ( '17615' == event.detail.contactFormId ) { 
     } 
    else if( '19110' == event.detail.contactFormId ){
        location = 'abc.com1/thank-you-broucher/';
    }
    else {
         location = 'abc.com1/thank-you/';
     }
}, false );

if (document.body.classList.contains('page-id-12345')) {

   function goBack() {
        history.go(-1);
    }
    window.setInterval(goBack, 3000);
}
</script>

document.addEventListener('wpcf7mailsent',函数(事件){
//地点='abc.com1/thank-you/';
如果('17615'==event.detail.contactFormId){
} 
else if('19110'==event.detail.contactFormId){
地点='abc.com1/谢谢你,布鲁彻/';
}
否则{
地点='abc.com1/thank-you/';
}
},假);
if(document.body.classList.contains('page-id-12345')){
函数goBack(){
历史。go(-1);
}
窗口设置间隔(goBack,3000);
}

我更喜欢历史;因为您可以返回甚至超过1页,例如history.go(-2);将返回两页而不是一页,在某些情况下,这有时很方便。

使用
js
内置
历史的问题之一是指行为基于您的浏览器,而不是您的网站结构

如果有人决定直接从url或书签访问网站,使用
history.go(-1)登陆时,他将被重定向到网站环境之外


当你使用Wordpress的时候 我们可以基于当前用户url轻松构建返回url函数

任何可以卸载到服务器上的东西都应该是。这里不是使用
js
,而是一个
php
替代方案。这里的主要优势是将用户定位到您的网站。这是我们的
get\u backward\u url()
函数

add_action( 'init', 'get_backward_url' );
function get_backward_url() {

    $scheme = $_SERVER['REQUEST_SCHEME'];
    $request = $_SERVER['REQUEST_URI'];
    $host = $_SERVER['HTTP_HOST'];

    if ( str_contains( $request, '?' ) ) { //... case handling, urls with variables
        $cleaner = substr( $request, 0, strpos( $request, '?' ) );
        $request = $cleaner;
    };
        
    if ( str_ends_with( $request, '/' ) ) //... case handling, urls with/without end-slash
        $worker = explode( '/', substr( $request, 1, -1 ) );
    else
        $worker = explode( '/', substr( $request, 1 ) );
        
    array_pop( $worker );
    
    if ( str_contains( $host, 'localhost' ) ) //... case handling, urls on local hosting
        $href = esc_url( $scheme . '://' . $host . '/' . implode( '/', $worker ) . '/' );
    else
        $href = esc_url( $scheme . '://' . $host . implode( '/', $worker ) . '/' );

    if ( ! is_home() && ! is_front_page() ) //... case handling, home or front page
        return $href;

};
然后,任何时候我们需要在模板中使用它,我们可以简单地在前端输出它

<a href="<?= get_backward_url(); ?>">← go back</a>


`switch(event.detail.contactFormId){case'17615:break;case'19110:{location='abc.com1/thank you broucher/';break;}默认值:{location='abc.com1/thank-you/';break;}`window.location.history(-1)返回的方式手动将用户重定向到他们已经访问过的页面是一种代码味道。这可能会导致缓存问题,尤其是涉及表单的情况下。我建议您更改UI流,以便用户在满足所有业务逻辑要求之前无法进行—假设出于验证原因需要这样做。但是如何要在3秒钟后添加我的代码发送到原始上一页吗?我想自动发送到上一页我添加了一个函数,现在自动将您发送回,如果您需要更多帮助,请告诉我,您可以通过单击或windows加载等方式使用最后一个函数…如果('17615'==event.detail.contactFormId){//将表格17615上的sumissions发送到第一个感谢页面}如果('19110'==event.detail.contactFormId){location='abc.com11/thank you broucher/';goBackTimed();}其他{location='abc.com1/thank-you/';goBackTimed();},false);函数goBackTimed(){setTimeout(()=>{window.history.go(-1);},3000);}-我在上面试过了,但是没有任何错误。如果你把函数放在表单页面上,这需要放在感谢页面上。
<script>
document.addEventListener( 'wpcf7mailsent', function( event ) {
    //location = 'abc.com1/thank-you/';
     if ( '17615' == event.detail.contactFormId ) { 
     } 
    else if( '19110' == event.detail.contactFormId ){
        location = 'abc.com1/thank-you-broucher/';
    }
    else {
         location = 'abc.com1/thank-you/';
     }
}, false );

if (document.body.classList.contains('page-id-12345')) {

   function goBack() {
        history.go(-1);
    }
    window.setInterval(goBack, 3000);
}
</script>
add_action( 'init', 'get_backward_url' );
function get_backward_url() {

    $scheme = $_SERVER['REQUEST_SCHEME'];
    $request = $_SERVER['REQUEST_URI'];
    $host = $_SERVER['HTTP_HOST'];

    if ( str_contains( $request, '?' ) ) { //... case handling, urls with variables
        $cleaner = substr( $request, 0, strpos( $request, '?' ) );
        $request = $cleaner;
    };
        
    if ( str_ends_with( $request, '/' ) ) //... case handling, urls with/without end-slash
        $worker = explode( '/', substr( $request, 1, -1 ) );
    else
        $worker = explode( '/', substr( $request, 1 ) );
        
    array_pop( $worker );
    
    if ( str_contains( $host, 'localhost' ) ) //... case handling, urls on local hosting
        $href = esc_url( $scheme . '://' . $host . '/' . implode( '/', $worker ) . '/' );
    else
        $href = esc_url( $scheme . '://' . $host . implode( '/', $worker ) . '/' );

    if ( ! is_home() && ! is_front_page() ) //... case handling, home or front page
        return $href;

};
<a href="<?= get_backward_url(); ?>">← go back</a>