将 JavaScript 变成书签或小书签?

将 JavaScript 变成书签或小书签?

我已经创建了一个脚本,可以在悬停时显示密码,就像 Windows 8 单击眼睛一样。

我已经通过 JavaScript 使用以下代码实现了此功能。

function text(){this.type="text"}function password(){this.type="password"}function addHandlers(){var e=false;var t=document.evaluate("//input[@type='password']",document,null,6,null);for(var n=t.snapshotLength-1,r;r=t.snapshotItem(n);n--){if(!e){r.addEventListener("mouseover",text,false);r.addEventListener("mouseout",password,false)}else{r.addEventListener("focus",text,false);r.addEventListener("blur",password,false)}}}addHandlers()

抱歉,JavaScript 代码太复杂,但我想创建一个运行该脚本的书签或小书签...

我试过:

javascript:(mycode);

但它没有用...

答案1

为了解决您的具体问题,我设法让您的 JavaScript 代码在此版本中无任何错误地执行:

javascript:(function(){function text(){this.type="text"};function password(){this.type="password"};function addHandlers(){var e=false;var t=document.evaluate("//input[@type='password']",document,null,6,null);for(var n=t.snapshotLength-1,r;r=t.snapshotItem(n);n--){if(!e){r.addEventListener("mouseover",text,false);r.addEventListener("mouseout",password,false)}else{r.addEventListener("focus",text,false);r.addEventListener("blur",password,false)}}};addHandlers();alert("bookmarklet loaded");})();

为了查看您的代码是否有效,我alert("bookmarklet loaded");在书签小程序的末尾添加了一个。因此您可以尝试一下,并且应该会看到一个消息框出现(因为我是在 Firefox 17 上测试的)。我无法说您的代码是否有效,但这当然不是问题所在。

您可以记住一些事项,或者使<script></script>标签内的 JavaScript 代码转换更容易被书签小程序采用

  • 在普通的 JavaScript 代码中,换行符可以分隔两个命令。书签小程序位于一行中,因此请用分号代替换行符

这里有一个例子

让我们举个例子。我们有两个包含两条指令的源代码片段:

var anumber=1
var atext="hallo"

当将所有内容放在一行(=将换行符设为空格)时,您首先会得到这样的结果:

var anumber=1 var atext="hallo"

这不再是有效的 JavaScript 代码。如果要将两条指令合并到一行中,则需要使用分号分隔/定界这两条指令,如下所示:

var anumber=1; var atext="hallo"
  • 把你的所有代码包装成这种闭包:
    javascript:(function(){ [...here your code...] })();

有很多网站可以研究解决方案。比如这里

答案2

实际上你已经非常接近了。你只需要这样说:

javascript:(function(){mycode})();

在您的示例中,您可以尝试这样做:

javascript:(function(){function text(){this.type="text"};function password(){this.type="password"};function addHandlers(){var e=false;var t=document.evaluate("//input[@type='password']",document,null,6,null);for(var n=t.snapshotLength-1,r;r=t.snapshotItem(n);n--){if(!e){r.addEventListener("mouseover",text,false);r.addEventListener("mouseout",password,false)}else{r.addEventListener("focus",text,false);r.addEventListener("blur",password,false)}}};addHandlers()})();

当你压缩你的代码时请注意分号,你缺少了一些分号。

相关内容