如何防止bookmarklet加载其结果?

时间:2012-12-10 06:24:32

标签: javascript bookmarklet

我有一个简单的书签,用于在提示符()中显示元素的值。它可以工作,但在运行窗口后只加载字符串“null”或提示值。

如何阻止小书签导致页面加载?

我只想让脚本弹出提示,但不做任何其他事情。

我的书市是:

javascript:var%20description;var%20metas=document.getElementsByTagName('meta');for(var%20x=0,y=metas.length;x<y;x++){if(metas[x].name.toLowerCase()=="description"){description=metas[x];}}prompt("Meta%20Description",description.content);

..解开的东西看起来像这样:

var description;
var metas=document.getElementsByTagName('meta');
for(var x=0,y=metas.length;x<y;x++){
    if(metas[x].name.toLowerCase()=="description"){
        description=metas[x];
    }
}
prompt("Meta Description",description.content);

2 个答案:

答案 0 :(得分:4)

这些天被接受的方式是将代码包装在像这个

这样的“立即调用的函数表达式”中
(function(){ /*your code */})();

这比最后添加void(0);更好,因为将代码包装在函数中可以防止在书签中和父HTML文档范围内的命名变量和函数之间发生冲突。

换句话说,如果您现在在使用JavaScript代码且已存在变量“description”的网页上运行您的书签,则可能会产生问题。

答案 1 :(得分:2)

在其末尾添加void(0);

javascript:var%20description;var%20metas=document.getElementsByTagName('meta');for(var%20x=0,y=metas.length;x<y;x++){if(metas[x].name.toLowerCase()=="description"){description=metas[x];}}prompt("Meta%20Description",description.content);void(0);