【问题标题】:"javascript:" uri protocol replaces whole page with text"javascript:" uri 协议用文本替换整个页面
【发布时间】:2018-07-12 18:38:51
【问题描述】:

所以,我试图用a="foo" 之类的代码创建一个javascript: 链接。我尝试使用javascript:a="foo",但没有成功。由于某种原因,它没有将 var a 更改为 "foo",而是将整个页面替换为 foo,例如 document.write

我也尝试过对 URI 进行编码,但 javascript:a%3D%22foo%22javascript:%61%3D%22%66%6F%6F%22 都不起作用。

由于调用像javascript:alert("Hello World!") 这样的函数可以工作,我运行javascript:a=String("foo"),也没有任何运气。不过,使用javascript:var%20a="foo"javascript:a=123 确实有效,但它对我不起作用,因为我的最终目标是更改对象中的属性。

有什么办法可以避免吗?

【问题讨论】:

  • 另外,javascript:a=String.fromCharCode(102,111,111) 做同样的事情。

标签: javascript uri


【解决方案1】:

在 DOM 属性中内联设置变量不是一个好习惯,但如果你必须这样做:

<a href="javascript: void(a='foo')">Link</a>

<a href="javascript: void(0)" onclick="a='foo'">Link</a>

【讨论】:

  • 非常感谢!我没有使用超链接,但void() 有效。
  • 哦,我明白了。当 javascript: 协议中的表达式返回一个字符串时,它会打印该字符串,但 void 总是返回 undefined。这就是 var 起作用的原因。
猜你喜欢
  • 2013-02-27
  • 1970-01-01
  • 2011-11-08
  • 2014-07-25
  • 2015-07-10
  • 1970-01-01
  • 2020-02-09
  • 2013-04-28
  • 2011-12-08
相关资源
最近更新 更多