gpt4 book ai didi

javascript - 通过用户脚本删除部分网站标题

转载 作者:行者123 更新时间:2023-11-30 08:54:59 26 4
gpt4 key购买 nike

我尝试编码 userscript这会删除网站标题中的所有内容(Flash 浏览器游戏),但会删除开始操作时出现的倒计时。

我是 Javascript 的新手,需要一些帮助。

更新

正则表达式问题已解决,但我仍然需要一些帮助来让此脚本“监控”标题,因此每次游戏更改时脚本都会再次运行。/p>

主标题是这样的:

Shakes & Fidget - The Game (buffed buffed)

一旦 Action 开始,倒计时就会添加到开头,因此标题会变为

02:26 - Shakes & Fidget - The Game (buffed buffed)

我希望标题只显示倒计时。

我在网上搜索并找到了不同的方法来执行此操作,但没有一种方法适合我。

这是我目前拥有的:

// ==UserScript==
// @name Shakes & Fidget Buffed title shortener
// @namespace http://släcker.de
// @version 0.1
// @description Removes the page title of Shakes & Fidget to only display left time if it exists
// @include *.sfgame.*
// @exclude www.sfgame.*
// @exclude sfgame.*
// @copyright 2013+, slaecker
// ==/UserScript==

var regex = [^0-9:]

function cleanTitle() {
var oldTitle = document.title;
var oldTitleRX = oldTitle.match(regex);
document.title = oldTitle.replace(oldTitleRX,"");
return oldTitle;
}


cleanTitle()

Javascript 控制台显示有关正则表达式的错误。我试图转义这些字符,但错误是一样的:

env: ERROR: Syntax error @ 'Shakes & Fidget Buffed title shortener'!
Unexpected token ^
SyntaxError: Unexpected token ^
at Window.Function (<anonymous>)
at L (eval at <anonymous> (eval at <anonymous> (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/content.js:51:21)), <anonymous>:156:21)
at n (eval at <anonymous> (eval at <anonymous> (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/content.js:51:21)), <anonymous>:384:2)
at R (eval at <anonymous> (eval at <anonymous> (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/content.js:51:21)), <anonymous>:388:86)
at Q (eval at <anonymous> (eval at <anonymous> (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/content.js:51:21)), <anonymous>:194:40)
Uncaught SyntaxError: Unexpected token ^
L
n
R
Q

它必须是正则表达式匹配,因为包含的字符串“(buffed buffed)”发生了变化(它显示服务器名称)。

另一个问题是脚本应该“监控”标题,因为每次开始或完成新操作时它都会更改,但我的脚本只运行一次(没有使用正则表达式进行测试)。

预先感谢您的帮助,

懒鬼

最佳答案

对于正则表达式,使用:

document.title = document.title.replace (/[^0-9:]/g, "");

要检测标题更改,请使用 MutationObservers ,一项在 Google Chrome 和 Firefox(这两个主要的 浏览器)中实现的新 HTML5 功能。

这个完整的脚本可以工作:

// ==UserScript==
// @name Shakes & Fidget Buffed title shortener
// @namespace http://släcker.de
// @version 0.1
// @description Removes the page title of Shakes & Fidget to only display left time if it exists
// @include *.sfgame.*
// @exclude www.sfgame.*
// @exclude sfgame.*
// @copyright 2013+, slaecker, Stack Overflow
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/

var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var myObserver = new MutationObserver (titleChangeDetector);
var obsConfig = {
//-- Subtree needed.
childList: true, characterData: true, subtree: true
};

myObserver.observe (document, obsConfig);

function titleChangeHandler () {
this.weInitiatedChange = this.weInitiatedChange || false;
if (this.weInitiatedChange) {
this.weInitiatedChange = false;
//-- No further action needed
}
else {
this.weInitiatedChange = true;
document.title = document.title.replace (/[^0-9:]/g, "");
}
}

function titleChangeDetector (mutationRecords) {

mutationRecords.forEach ( function (mutation) {
//-- Sensible, Firefox
if ( mutation.type == "childList"
&& mutation.target.nodeName == "TITLE"
) {
titleChangeHandler ();
}
//-- WTF, Chrome
else if (mutation.type == "characterData"
&& mutation.target.parentNode.nodeName == "TITLE"
) {
titleChangeHandler ();
}
} );
}

//-- Probably best to wait for first title change, but uncomment the next line if desired.
//titleChangeHandler ();

如果您使用的是其他浏览器(在问题中说明),则回退到使用 setInterval()

关于javascript - 通过用户脚本删除部分网站标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14321343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com