首页 > 解决方案 > iife 与 document.title 的简单语句行为

问题描述

我正在寻找一种使用 javascript 小书签更改当前页面选项卡标题的方法。

我最初尝试了一个简单的语句,但它实际上将我导航到一个只包含标题的新页面。然后我找到了相同的代码,但作为一个 iife 包裹起来。

基本上我想了解这之间的区别:

javascript: document.title="title";

和这个:

javascript: (function(){document.title="title";})();

有人能解释一下为什么第一个语句从页面导航而第二个 iife 语句实际上改变了标题吗?

标签: javascriptbookmarklet

解决方案


这基本上就是小书签所做的 - 如果后面的表达式javascript:解析为undefined(例如字符串)以外的其他内容,则当前页面将被替换。因此,运行任意 Javascript 的一种选择是运行不返回任何内容的 IIFE。更多解释在这里

该行为可能因浏览器而异。

另一种选择是使用逗号运算符:

javascript: (document.title = 'www.google.com', undefined)

对于任何不是非常琐碎的代码,您可能会考虑使用用户脚本(如Tampermonkey)而不是书签,它可能更易于管理。


推荐阅读