当我尝试这样做时
:autocmd LocationChange .* echo document.title
第一个显示的页面没有回显。如果我继续浏览下一个选项卡,最后一个选项卡的标题会回显。
有人知道我怎样才能让每次登陆页面时标题立即回显,而不是在“离开”标签时回显?
而且它每两次才有效。如果我浏览标签 1、2、3、4、5、6、7、8(下一个标签),输出将是(当前为 1)
- _空白的
- 1 的标题
- _
- 3 的标题
- _
- 5 的标题
- _
- 7 的标题
- _
(现在位于标签 8)
但我想要
- 1 的标题
- 2 的标题
- ...
有任何想法吗?
答案1
我的 Firefox 中没有出现“每隔一页的标题丢失”的情况(您使用的是旧版本吗?)。但是“离开页面标题”的情况和您一样。这种情况发生的原因很容易理解:只要您更改位置,就会触发此 LocationChange 事件,因此它只会获取当前文档标题(对我们来说,它就是离开文档!)。
一种解决方法是在获取标题之前添加一些延迟。这是我尝试的方法:将一个 javascript 文件放在 vimperator/plugin 目录中,在其中添加此方法:
commands.addUserCommand ("showtitle", "add some delay before showing it",
function (args) {
setTimeout(function() {
liberator.echo(document.title);
}, 1);
}
);
此插件将为 vimperator 添加一个新命令(重新启动 FF 后)。如果您调用此命令,它将在 1 毫秒后显示当前文档标题。现在我们可以将此新命令用于我们的自动命令:autocmd LocationChange .* showtitle
。此后,您将看到当前文档标题(对我们来说是当前文档)在大多数情况下都会得到回显。您可以增加延迟以变得更加准确。