2014-05-07 157 views
0

我正在使用Stack Overflow上另一篇文章的代码。打印页面后无法重定向

How to I redirect to another page *after* printing document?

页给了我一个解决方案,写

window.location.href = ""; 

window.print();方法之后被写入。所以我做了。以下是我的代码

$('.start-printing').click(function() { 
    event.preventDefault(); 
    window.print(); 
    var url = window.location.href; 
    var formId = url.split('/')[4]; 
    var newPage = ""; 
    if (url.split('/')[3] == 'form') { 
     newPage = 'form_2'; 
    } else if (url.split('/')[3] == 'form') { 
     newPage = 'form_2'; 
    } else if (url.split('/')[3] == 'form_2') { 
     newPage = 'form_3'; 
    } else if (url.split('/')[3] == 'form_3') { 
     newPage = 'form_4'; 
    } else if (url.split('/')[3] == 'form_4') { 
     newPage = 'form_5'; 
    } 
    url = url + newPage + formId; 
}); 

我正在使用锚标签来完成这项工作。但我阻止了它的默认行为。你可以在第一行看到。

下面是HTML

<a href="~/#startPrinting" class="start-printing">START PRINTING</a> 

善有善报就是,它确实让我打印文档时,我一下就可以了。我可以看到Chrome的打印弹出窗口,然后点击打印按钮。但之后,它确实不会将我重定向到任何地方。

我已经试过在控制台中观察并试图指出问题所在。但我无法找到问题。

我也正在根据页面的当前URL将逻辑重定向到表单的下一页。

这里有什么错误?

回答

0

通过使用event.preventDefault(),您可以禁止锚标签执行自然要做的事情,即超链接到其他资源。因此,您不会被重定向到您想要的位置。

这就是说,为什么不只是添加一些额外的Javascript来执行您的点击功能底部的重定向?

http://www.tutorialspoint.com/javascript/javascript_page_redirect.htm

$(document).ready(function() { 
    $('.start-printing').click(function() { 
     event.preventDefault(); 
     window.print(); 
     var url = window.location.href; 
     var formId = url.split('/')[4]; 
     var newPage = ""; 
     if (url.split('/')[3] == 'form') { 
      newPage = 'form_2'; 
     } else if (url.split('/')[3] == 'form') { 
      newPage = 'form_2'; 
     } else if (url.split('/')[3] == 'form_2') { 
      newPage = 'form_3'; 
     } else if (url.split('/')[3] == 'form_3') { 
      newPage = 'form_4'; 
     } else if (url.split('/')[3] == 'form_4') { 
      newPage = 'form_5'; 
     } 
     url = url + newPage + formId; 
     window.location = url; 
    }); 
}); 
+0

即使在改变锚标记,一个span元素。它仍然不起作用! –

+0

尝试按原样留下锚标记,但只需将“window.location”代码添加到点击函数的最后。因此,单击链接时,默认行为被event.preventDefault()禁止,这非常好,然后通过window.print()发生打印任务。在此之后,你开始建立新的URL,它应该被传递给“window.location”。 window.location = url; – lux

+0

我正在尝试。对于window.location,我有这个值'urlSplit [2] +'/'+ newPage +'/'+ formId',但它似乎没有激活。任何猜测? –