【问题标题】:Execute Javascript method from browser address bar - GWT从浏览器地址栏执行 Javascript 方法 - GWT
【发布时间】:2013-09-17 21:42:03
【问题描述】:

我正在尝试通过在浏览器 URL/地址栏上执行它来在我的 Web 应用程序上执行 Javascript:

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

但是,什么都没有发生并且警告框没有出现?可能是应用程序在 DevMode 下运行的原因吗?

【问题讨论】:

  • 你的问题帮助我解决了 void(0);最后的部分,浏览器实际上导航离开当前页面。谢谢

标签: javascript gwt


【解决方案1】:

你可以像这样在块内编写你的javascript代码

javascript:{alert("ok");}

【讨论】:

  • 但请注意,它不适用于空白页。
  • 谢谢,不知道为什么 void() 不能接受多个以分号分隔的调用。当然它需要一个参数,但是你的语法避免了 void() 并允许多个语句。
  • @Andrew 谢谢,这是我唯一缺少的东西
【解决方案2】:

我相信大多数浏览器都拒绝从 URL 栏中执行 javascript: URL 作为安全措施(网络上有消息 – 尤其是 Facebook – 告诉人们将 javascript: URL 复制粘贴到他们的 URL 栏中触发了 XSS)。他们不想破坏书签,所以你可以把代码放在书签里;但是打开浏览器的 JS 控制台并在其中键入命令要容易得多。

无论如何,这不是因为 GWT 的 DevMode。

【讨论】:

  • 太糟糕了,在我之前使用过的旧浏览器中它工作正常,无论如何,我的目标是简单地调用 GwtQuery 暴露给 javascript 的 GWT 方法用于测试目的......
  • 使用浏览器的JS控制台不是更方便吗?它可以让您对复杂对象进行自省(比 window.alert 好得多)、自动完成、命令历史记录等。只有好处,没有任何缺点。
  • 其实我是用JS控制台来做日志的。我将用来执行 JS 方法的原因是触发我的应用程序的特定方法
  • 然后呢?是什么阻止您在 JS 控制台而不是 URL 栏中输入“window.alert('test')”(以重用您的示例)?
  • Chrome 会从您粘贴到其中的任何内容中删除“javascript”部分,但您仍然可以手动输入,您仍然可以告诉人们复制这样的内容并删除开头的句点: .javascript:while(1); //(相当无害)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多