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

我可以使用浏览器&x27;在javascript:void()函数中运行任意javascript代码吗;谁的地址栏?,javascript,Javascript,我想知道是否可以通过URL框在javascript:void()函数中运行一段代码(包括for循环和if语句)。是的,可以在URL框中运行语句 像这样: javascript:if(2>1){alert('2 > 1');} void不是函数,而是运算符。这意味着您可以使用括号或不使用括号。它所做的只是使其后面的表达式返回未定义的。对于导航,返回undefined可防止表达式的结果导致导航离开页面 您可以通过某些浏览器的地址栏运行任何JavaScript代码,无论是否使用void操

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

是的,可以在URL框中运行语句

像这样:

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

void
不是函数,而是运算符。这意味着您可以使用括号或不使用括号。它所做的只是使其后面的表达式返回未定义的
。对于导航,返回
undefined
可防止表达式的结果导致导航离开页面

您可以通过某些浏览器的地址栏运行任何JavaScript代码,无论是否使用
void
操作符
void
只会使这样做更安全,而无需导航离开。
void
的一个流行替代方法是将代码包装在一个自动执行的匿名函数中:

javascript:(function () { alert("hello"); })();
通常,类似这样的代码片段会保存为书签,以便在任何页面上单击书签或收藏夹栏中的链接即可运行。这些代码段称为

在一些较新的浏览器中,
javascript:
协议已被禁用,用于URL输入,最明显的是Firefox()。这主要是为了防止用户成为self-XSS攻击的目标,潜在攻击者会说服用户在地址栏中粘贴
javascript:
URL。在Google Chrome和最新版本的Internet Explorer中,
javascript:
部分从粘贴的代码中剥离。然而,在上述所有浏览器中,这些代码片段仍然可以作为书签使用


你可以在我不久前给出的另一个答案中阅读更多关于
void
:。

从地址栏(在IE 11和Firefox 27.0.1中测试)它不会工作。您必须将其保存为书签才能使用。@Nolonar:我无法验证您对IE 11的评论,因为我现在不在,笔记本电脑上只有Linux。我花了大约10分钟在网上搜索,只能找到与Chrome相同行为的引用(粘贴时,
javascript:
协议被剥离)。然而,我能够在Firefox中验证这一点。我已经用我的发现更新了答案。