使用javascript强制执行干净的路由

时间:2018-11-20 18:19:48

标签: javascript jquery

我正在使用旧版应用程序的UI,并且链接到该应用程序的路径是默认路径:

  

something / fldr

每当加载该页面时,它都会强制启动fldr / landing.asp页面。我们想让它转到other.asp而不是登陆。

我的处理方法是使用:

if (document.readyState === "interactive") {
               if(location.href == 'https://www.something.com/fldr'){
            location.href="https://www.something.com/other.asp";
              }
            }

这样做会导致页面停顿,landing.asp会加载到页面上,显示大约2秒钟,然后刷新到正确的页面。

在JS或jQuery中是否有用于执行类似操作的标准方法?我觉得有一种方法可以使页面挂起,直到执行if语句为止,而不是尝试加载错误的页面。但是我无法终生记得那是什么。我已经通过强制在API中返回正确的页面来处理此问题,但是我仍然觉得只有JS才能解决此问题。

注意:由于这是遗留应用程序的简化问题,因此构成了路由名称。

1 个答案:

答案 0 :(得分:1)

JavaScript(在浏览器中运行时)是一种客户端技术

这意味着在页面被提供并发送到用户的浏览器(客户端)之后,如果页面无法部分加载,则无法运行。浏览器开始加载资源并解析脚本和代码,您的脚本将按照解析的顺序执行。 实际上,这是您遇到的延迟

  

虽然您可能会对此进行调整以进行location.href更改   在此过程的较早部分执行,无法避免   在您进行客户端重定向之前进行部分页面加载   已实施。

从本质上讲,有一种更好的方法可以做到这一点,它将减少重定向延迟,使用户无法察觉。

在Web服务器级别进行此更改是理想的解决方案。但是,首先要考虑的是吗?

首先,在实现重定向之前,建议您查看IIS设置,看看是否有默认文档设置为fldr/landing.asp

然后您可以更改该设置,以使默认文档符合您的需求。

Here's an example for IIS how to do this

如果没有默认文档,或者有其他一些代码或应用程序逻辑迫使landing.asp加载,那么您将在Web服务器上为该URL设置301永久重定向。

Here are IIS docs on setting this up.

如果由于某些原因上述选项对您不可用(无法访问Web服务器等),那么您可以做的最好的事情就是确保该脚本在页面中比其他任何脚本先行,样式表等已加载。

另一种可能起作用的技巧是将landing.asp的全部内容替换为other.asp并称之为一天:)

这当然是最后的选择,希望您可以更改默认文档并对其进行处理。