我已经创建了一个脚本,可以在悬停时显示密码,就像 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()})();
当你压缩你的代码时请注意分号,你缺少了一些分号。