Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:检查url是否已更改?_Javascript - Fatal编程技术网

Javascript:检查url是否已更改?

Javascript:检查url是否已更改?,javascript,Javascript,我的url格式如下: http://domain.in/home http://domain.in/books/notes http://domain.in/books/notes/copy 我在window.load上调用了一个javascript函数来检查url是否已更改 如果url已更改,则执行代码,否则将在5秒后返回并再次检查 我的代码是: window.onload = function(){ setInterval(function(){ page_open()

我的url格式如下:

http://domain.in/home
http://domain.in/books/notes
http://domain.in/books/notes/copy
我在window.load上调用了一个javascript函数来检查url是否已更改

如果url已更改,则执行代码,否则将在5秒后返回并再次检查

我的代码是:

window.onload = function(){
   setInterval(function(){
       page_open();
   }, 5000);
};

function page_open(){
    var pages=unescape(location.href);
    pages=pages.substr( pages.lastIndexOf("studysquare.in/") + 15 ); 

    // gives book if url is http://studysquare.in/book
    //alert("pages"+pages+"\n\n  recent"+recent);

    if (pages==recent) {    return;     }
    recent=pages;

    alert("Reached down now the code will execute.");
}
现在的问题是:当url类似于:

http://domain.in/book
单级深,然后一切正常。但是当url是

http://domain.in/book/copy    or    http://domain.in/book/copy/notes
那么什么都不管用。。。。。 每5秒检查一次javascript中的3级深度url更改有什么帮助吗?:)


嗨,对不起,我忘了告诉你。。。我有一个.htaccess文件,当写入
域.in/
后的任意长度url时,该文件不允许浏览页面。。。。这意味着只有一个页面保持打开状态,不受url更改的影响…

当用户更改url时,浏览器将卸载当前所在的整个页面(包括javascript,因此它将停止运行),然后加载下一个页面。没有javascript能够跨页面更改运行。如果他们正在导航到另一个页面,则无法像您这样监视URL中的更改


捕捉URL变化的最佳方法是在body对象中添加
onUnload
事件,以便在开始加载用户请求的新页面之前,浏览器卸载页面时触发javascript——但我不确定这是否有助于实现跟踪用户最近页面浏览量的目标(如果这就是你想要做的)。

听起来像是一个历史插件,它会给你很大帮助


它允许您在URL更改时处理事件,以便您可以根据需要加载新内容。

您意识到在加载新页面时,您的代码的上下文将被破坏,并创建新的上下文吗?您的代码永远不会检测到更改,因为它的当前实例在您导航时停止执行。您好,抱歉,我忘了告诉您在…我有.htaccess文件,它不允许在写入domain.in/后的任何长度的url时导航页面…这意味着只有一个页面保持打开状态,并且不受url更改的影响…通过检查url是否已更改,您试图实现什么目的?只需尝试在主稳定页面上打开相对页面…htaccess不会改变更改浏览器的工作方式。如果他们更改URL,浏览器仍将破坏您的页面的当前上下文,并为其下一个请求创建一个新的上下文,而不考虑.htaccess(只有您的服务器才能看到,而不是浏览器)您好,我知道这一点…请告诉我为什么它不能处理2或3级深度url,因为url更改不会更改我的页面…感谢回复,因为它从未被调用过。上下文已被破坏,并且您的“旧url”在下一页调用代码时不存在。请将其视为一个正在运行的进程。当您转到另一页时,它会终止该进程并启动该进程的新实例。没有保留变量或数据,它将全部销毁。