【问题标题】:Javascript "value=..." returns blank pageJavascript "value=..." 返回空白页
【发布时间】:2017-01-12 06:28:17
【问题描述】:

按照以下步骤操作。

步骤 1:

  1. 转到google
  2. 打开 JavaScript 控制台。
  3. 输入命令:document.all.q.value = "hello"

正如预期的那样,名称为“q”的元素(搜索字段)设置为“hello”)。

步骤 2:

  1. 转到google
  2. 在地址栏输入javascript: document.all.q.value = "hello!"
  3. 按 Enter 键

如果您的浏览器是 Internet Explorer 或 Google Chrome,则 javascript 会将 google 网站替换为一个完全空白的页面,“Hello”一词除外。

终于

既然您已经破解了浏览器,请返回 Google.com 并重复步骤 1。您应该会收到一条错误消息“未捕获的 ReferenceError:未定义文档 (...) VM83:1

问题:

我做错了吗?还有另一种方法有效,同时仍然使用地址栏进行 JS 输入?

【问题讨论】:

  • 感谢 RamenChef 和 thegunmaster! :)

标签: javascript html google-chrome internet-explorer browser


【解决方案1】:

javascript: 方案 URL 的目的是使用 JavaScript 生成一个新页面。用它修改现有页面是一种 hack。

document.all.q.value = "hello!"; 的值为"hello!",因此当您访问该 URL 时,将生成并加载一个仅包含文本 hello! 的新 HTML 文档来代替现有页面。

为避免这种情况:确保 JS 不返回字符串。您可以使用void 来执行此操作。

javascript:void(document.all.q.value = "hello!");

【讨论】:

  • 我明白了!感谢您提供所有信息!确实,现在确实可以正常工作!另外,从来不知道 void() 函数。非常感谢!
【解决方案2】:

当在地址栏中使用javascript: 时,一些(如果不是大多数)浏览器会将其作为新页面处理,因此您必须在末尾添加window.history.back();

javascript: document.all.q.value = "hello!"; window.history.back();

【讨论】:

  • 我确实尝试过,但发生了奇怪的事情。首先输入文本,然后立即将其删除:P 无论如何,昆汀的解决方案非常有效!不过谢谢你的:)
猜你喜欢
  • 2017-11-20
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
相关资源
最近更新 更多