【发布时间】:2019-12-08 08:06:17
【问题描述】:
当用户使用限定 URL(例如 mysite.com/abc.html)导航到我的网站时,我想在显示任何页面之前先调用 javascript 函数。我需要它,因为我的网站是由 ajax 驱动的。
我有一个在页面首次加载时调用的函数:
<body onload="FirstJSFunction(150);”>
该函数将拦截 URL 并执行我想要的操作,但前提是合格的 URL 是 mysite.com/index.html。站点内的任何其他有效 URL 都将绕过 javascript 函数并加载请求的页面。那不是我想要的。
FirstJSFunction 是这样处理的:
<script>
function FirstJSFunction(type) {
var gurl = GetURL();
length = gurl.length;
console.log("SFR URL " + length);
var pos = gurl.lastIndexOf("/");
console.log ("SFR_LastFwdSlash " + pos);
if (length > pos) {
var sub1 = gurl.substr(pos, length);
console.log ("SFR_Sub1 " + sub1);
sub2 = sub1.substr(1, 5);
console.log ("SFR_Sub2 " + sub2);
if (sub2 == "index") {
ShowAjax(3);
return true; }
if (sub2 != "index") {
ShowAjax(3);
return true; }
}
</script>
<script>
function GetURL() {
var loc_href = location.href;
console.log ("URL " + loc_href);
var length = loc_href.length;
console.log ("Length " + length);
var pos = loc_href.lastIndexOf("/");
console.log ("LastFwdSlash " + pos);
var pos2 = loc_href.indexOf("/");
console.log ("FwdSlash " + pos2);
if (length > pos) {
var substr = loc_href.substr(pos, length);
console.log ("Substring " + substr);
return substr; }
}
</script>
所以我的问题是:当用户使用除 mysite.com 或 mysite.com/index.html 以外的任何 URL 导航到我的网站时——例如 mysite.com/abc.html——为什么上面的代码不起作用截取 URL 并调用 javascript 函数,如果 URL 是 index.html,就会发生这种情况。
澄清一下,我只想拦截第一个传入的 URL。我不想拦截用户在到达我的站点后输入到地址栏中的任何 URL。
感谢您对此的任何帮助。
【问题讨论】:
-
那么代码在所有其他页面上吗?听起来您真正想要的是 SPA。
-
您需要配置服务器重定向到主页。您似乎也对从服务器发送的页面的工作方式以及其中的 javascript 运行位置有一些误解
-
取决于网站的构建。有框架吗?您需要查看文档以了解当有人提出第一个请求时,框架的哪一部分实际上首先被命中。
-
我不想重定向到主页,我想调用一个ajax函数。
-
如果有其他页面没有打开代码,不清楚为什么您期望它在加载时会运行。它在它所在的页面上工作,但在看起来不像赠品的页面上却没有!
标签: javascript jquery url redirect