我正在编写用户脚本来修改我正在播放的浏览器游戏的用户界面。但是我遇到了一个问题,当我导航到新页面时,我添加到页面的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");
});
答案 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==