"javascript:" uri 协议用文本替换整个页面

"javascript:" uri protocol replaces whole page with text

所以,我试图用 a="foo" 之类的代码制作 javascript: link。我尝试使用 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 一样有效,但它对我不起作用,因为我的最终目标是更改对象中的 属性。

有什么办法可以避免这种情况吗?

在 DOM 属性内设置内联变量不是好的做法,但如果您必须:

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

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