应该如何处理JavaScript <href>链接的返回值

How should the return value of JavaScript <href> links be handled?

本文关键字:href 链接 返回值 JavaScript 何处理 处理      更新时间:2023-09-26

根据标准,处理javascript协议href链接的返回值的正确方法是什么?

一些例子:

  • <a href='javascript:"Hello World";'> Click </a> <!-- return a String -->

  • <a href='javascript:ThisFunctionReturnsString();'> Click </a>

  • <a href='javascript:12345;'> Click </a> <!-- Number -->

  • <a href='javascript:[1, 2, 3, 4, 5];'> Click </a> <!-- Array -->

  • <a href='null;'> Click </a> <!-- null-->

  • <a href='undefined;'> Click </a> <!-- undefined-->

  • <a href='javascript:{};'> Click </a> <!-- Object -->

符合标准的浏览器应如何处理返回值?

当前的野外浏览器与此标准行为有何不同?

来自 Web 应用程序 API §6.1.5:

下面说明了为什么单击链接会替换文档内容:

如果执行脚本的结果无效(没有返回 值),则必须以等效于 HTTP 的方式处理 URL。 具有 HTTP 204 无内容响应的资源。

否则,必须以等效于 HTTP 的方式处理 URL。 具有 200 OK 响应的资源,其内容类型元数据为 text/html,其响应正文是转换为 字符串值

只需将javascript:"Hello World";粘贴到地址栏中即可轻松演示此行为。javascript:(function() { return "Hello World";})()也是如此。

下面解释了为什么只有你的 1 和 2 代码片段实际上在做某事。

让脚本源是使用为 javascript 定义的内容检索操作获得的字符串:URL