当用户使用合格的 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。
感谢您对此的任何帮助。
最佳答案
我不确定你解释的一切,所以在这里做出一些假设。
但是如果该 JS 代码仅在 index.html 上,那么它永远不会在任何其他页面上运行。为此,您需要将其包含在每个页面中。 只有服务器才能“查看”您的用户访问的所有页面。
关于javascript - 使用 javascript 拦截传入的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57279994/