我有一个用户脚本(适用于Chrome),用来为我格式化Duolingo的练习页面。它只应用了一行CSS代码:
jQ(document).ready(function(){
jQ('#start-button').css({"float": "left", "margin-right": "10em"});
});
第一次进入页面时,这个方法可以正常工作。但是他们使用Ajax来避免页面重新加载。URL确实会发生变化,因此如果我检测到这一点,我就可以刷新CSS更改,并在这种站点导航模式下不会丢失格式。
有人知道检测它的好方法吗?
编辑:完整的用户脚本实现了最初几个人指出的流行解决方案(该解决方案不起作用):
// ==UserScript==
// @name duolingo
// @namespace http://your.homepage/
// @version 0.1
// @description reformat /skills to not start timed practice by default
// @author You
// @include /^https?\:\/\/www\.duolingo\.com\/(skill|practice)?\/?.*/
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
// @grant none
// ==/UserScript==
window.jQ=jQuery.noConflict(true);
jQ(document).ready(function(){
style_duolingo();
});
jQ(window).bind('hashchange', function() {
style_duolingo();
});
jQ(document).ajaxComplete(function() {
style_duolingo();
});
function style_duolingo() {
jQ('#start-button').css({"float": "left", "margin-right": "10em"});
console.log("Tampermonkey script: wrote css change");
}
编辑 #2:
赏金奖励
请提供一个不加载外部库的工作解决方案(我想知道我错过了什么,而不是把它放在黑匣子中),并使用事件解决该问题(不能使用基于间隔的解决方案)。如果事件不能使用,请提供正确的解决方案和不触发事件的原因。
$('head').append("<style type='text/css'> #start-button{ float: left !important; margin-right: 10em; !important}</style>");
? - Me.Name