从浏览器地址栏执行Javascript方法 - GWT

16

我正在尝试通过在浏览器URL/地址栏上执行以下代码来运行我的Web应用程序中的JavaScript:

javascript:window.alert('test');void(0);

然而,什么都没有发生,警示框没有弹出?原因可能是应用程序正在 DevMode 下运行吗?


你的问题帮助我理解了末尾的void(0);部分,否则浏览器会实际导航离开当前页面。谢谢。 - BraveNewMath
2个回答

19

您可以像这样在代码块中编写JavaScript代码

javascript:{alert("ok");}

3
请注意,它不能在空白页面上运行。 - Andrew
谢谢,我不确定为什么void()不能接受多个分号分隔的调用。当然它期望一个参数,但是你的语法避免了void()并允许多个语句。 - Vasiliy Sharapov
1
@Andrew 谢谢,那就是我所缺少的。 - MrObjectOriented
仍然适用于Chrome 104。 - GaTechThomas

13
我相信大多数浏览器为了安全起见拒绝从URL栏执行javascript: URL(网络上已经出现过消息,尤其是在Facebook上,告诉人们将javascript: URL复制粘贴到他们的URL栏中会触发XSS)。虽然他们不想破坏书签,所以你可以把那段代码放在书签中,但更容易的方法是打开浏览器的JS控制台并在那里键入该命令。 无论如何,这与GWT的DevMode无关。

很遗憾,在我之前使用的旧浏览器中它可以正常工作,但无论如何,我的目标只是为了测试目的简单地调用由GwtQuery公开给javascript的GWT方法... - quarks
4
使用浏览器的 JS 控制台不是更方便吗?它可以让你更好地了解复杂对象(比 window.alert 好得多),自动完成、命令历史记录等功能。只有好处,没有任何缺点。 - Thomas Broyer
实际上,我使用JS控制台进行日志记录。我使用它来执行JS方法的原因是触发我的应用程序的特定方法。 - quarks
那又怎么样呢?是什么阻止你在JS控制台中键入“window.alert('test')”(以重用您的示例)而不是在URL栏中键入它? - Thomas Broyer
1
Chrome会从你复制到它里面的任何内容中删除"javascript"部分,但你仍然可以手动输入它,并且你仍然可以告诉别人复制像这样的东西,然后只需删除开头的句点:.javascript:while(1); //(相当无害) - Jason Newell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接