用户如何检测用户何时导航到新页面?

时间:2018-01-20 05:33:40

标签: javascript jquery

我正在编写用户脚本来修改我正在播放的浏览器游戏的用户界面。但是我遇到了一个问题,当我导航到新页面时,我添加到页面的UI元素就消失了。

我尝试了几种方法来尝试检测新页面何时加载并重新创建我的UI元素。但我一直无法做到。

以下是我尝试过的方法:

$(window).on("load", function(){
    console.log("loaded new page");
});

$(document).ajaxComplete(function(){
    console.log("loaded new page");
}); 

$(window).on("hashchange", function(){
    console.log("loaded new page");
 });

当我换到新页面时,它们都没有被触发。

任何人都可以告诉我为什么这些都不是从我的用户手册中触发的?我怎样才能正确检测到新页面已加载?

作为参考,我试图检测此问题的浏览器游戏是https://talibri.com/

编辑: 我在我的脚本@match中包含了以下内容。

 @match        *://talibri.com/*
 @match        *://www.talibri.com/*

编辑: 因此,昨晚我觉得我的工作得益于Vignesh的建议,但是没有!它实际上仍然没有工作。所以今天早上和下午我一直在尝试任何我能想到的工作,我终于明白了。

显然,我试图解析的页面是使用Ruby on Rails Turbolinks,它在页面加载方面做了一些奇怪的事情。

要解决我的问题,我只需执行以下代码:

$(window).on("turbolinks:load", function(){
    console.log("loaded new page");
});

我还做了load和turbolinks:加载来处理两个加载事件:

$(window).on("load turbolinks:load", function(){
    console.log("loaded new page");
});

1 个答案:

答案 0 :(得分:0)

这很有效。

最后需要包含*

// @match http*://talibri.com/*

以上内容检测talibri.com

中的所有网页

https://talibri.com/

https://talibri.com/splash/world

https://talibri.com/splash/patches

https://talibri.com/users/sign_in

// ==UserScript==
// @name         My Utility
// @namespace    VigneshRaja_UserScripts
// @version      0.1
// @description  My Companion
// @author       Vignesh Raja
// @include      http*://talibri.com/*
// @grant        GM_setClipboard
// @grant        GM_openInTab
// ==/UserScript==