gpt4 book ai didi

java - 如何定期更改页面标题并打开/关闭更改?

转载 作者:行者123 更新时间:2023-12-01 14:19:54 28 4
gpt4 key购买 nike

我想定期更改页面标题,即在当前页面标题前面添加一个 (*) 并在几秒钟后将其删除。我想在代码中打开和关闭此标题更改。

我从以下位置获取并设置页面标题:

    public static native void setPageTitle(String title) /*-{
$doc.title = title;
}-*/;


public static native String getPageTitle() /*-{
return $doc.title;
}-*/;

但是我应该如何编写一个函数,在添加和删除前缀的同时每 300 毫秒更改页面标题?

我尝试的是:

private void changePageTitle(final String prefix) {

new Timer() {
@Override
public void run() {
String pageTitle =getPageTitle();

if (pageTitle.startsWith(prefix)) {
pageTitle = pageTitle.substring(prefix.length());
}
else {
pageTitle = pageTitle + prefix;
}
setPageTitle(pageTitle);

}
}
}.schedule(300);
}

这不起作用。我不知道如何打开和关闭该进程?

效果应该像 Facebook 一样。当收到新消息并且您不在 Facebook 浏览器选项卡上时,该选项卡会显示一条闪烁的通知。

最佳答案

您必须将 schedule(300) 更改为 scheduleRepeating(300)

您应该只使用一个 Timer 实例,或者在创建新计时器之前保存最后一个计时器以将其取消。

顺便说一句:您不需要编写任何 JSNI 来访问窗口标题,只需使用 Window.getTitle()Window.setTitle(String)

编辑:

这应该有效:

// create just an instance of the timer
final MyUpdateTitleTimer mytimer = new MyUpdateTitleTimer();
// To Start the updater
mytimer.setPrefix("> ");
// To Stop set the prefix to null
mytimer.setPrefix(null);


class MyUpdateTitleTimer extends Timer {
private String prefix;
private String title;
private boolean b;

public void run() {
String s = (b = !b) ? prefix + title : title;
Window.setTitle(s);
}

public void setPrefix(String prefix) {
if (title != null) {
Window.setTitle(title);
}
this.prefix = prefix;
if (prefix == null) {
cancel();
} else {
title = Window.getTitle();
scheduleRepeating(300);
}
}
}

关于java - 如何定期更改页面标题并打开/关闭更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701743/

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