【发布时间】:2018-01-21 05:11:28
【问题描述】:
我正在编写一个修改我正在玩的浏览器游戏 UI 的用户脚本。但是我遇到了一个问题,当我导航到新页面时,我添加到页面的 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:load 来处理这两个加载事件:
$(window).on("load turbolinks:load", function(){
console.log("loaded new page");
});
【问题讨论】:
-
您在用户脚本的
@match中包含了什么? -
您首先定义一个全局变量,它将默认值设置为主页。您应该在单击菜单和该菜单时触发一个功能。一个函数更新全局变量,你也可以通过它找到你目前所处的位置。
-
*://talibri.com/* *://www.talibri.com/*
-
有效吗?
标签: javascript jquery