我可以使用浏览器的地址栏在javascript:void()函数中运行任意javascript代码吗?

时间:2010-10-28 16:05:27

标签: javascript

我想知道我是否可以通过URL框在javascript:void()函数中运行一段代码(包括for循环和if语句)。

2 个答案:

答案 0 :(得分:3)

void不是一个函数,它是一个运算符。这意味着您可以使用括号或不带括号。它所做的就是使其后面的表达式返回undefined。在导航的情况下,返回undefined会阻止表达式的结果导致离开页面。

您可以通过某些浏览器的地址栏运行任何JavaScript代码,无论您是否使用void运算符。 void只是在没有导航的情况下安全地执行此操作。 void的一个流行替代方法是将代码包装在自执行匿名函数中:

javascript:(function () { alert("hello"); })();

通常,像这样的代码片段会保存为书签,以便可以通过点击任意页面上的书签或收藏夹栏中的链接来运行它们。这些代码段称为Bookmarklets

在某些较新的浏览器中,javascript:协议已被禁用以进行网址输入,最明显的是Firefox(since 6.0)。这主要是为了防止用户成为自我XSS攻击的目标,潜在攻击者确信他们会在地址栏中粘贴javascript:网址。在Google Chrome和最新版本的Internet Explorer中,javascript:部分会从粘贴的代码中删除。但是,这些片段在所有上述浏览器中仍然用作bookmarklet。

您可以在我前一段时间的另一个答案中详细了解voidHelp me understand javascript:void(null)

答案 1 :(得分:0)

是的,您可以在网址框中运行语句。

像这样:

javascript:if(2>1){alert('2 > 1');}