我一直在努力通过阅读尽可能多的javascript代码来提高我的javascript技能。 在这样做时,我有时会看到javascript:前缀附加到HTML元素标记中的事件处理程序属性的前面。 这个前缀的目的是什么? 基本上,之间有任何明显的区别:

onchange="javascript: myFunction(this)"

onchange="myFunction(this)"

===============>>#1 票数:19 已采纳

你的例子中可能没什么。 我的理解是javascript:用于锚标签(代替实际的href )。 您可以使用它,以便您的脚本可以在用户单击链接时执行,但不会启动导航回页面(与onclick结合的空白href将执行此操作)。

例如:

<a href="javascript:someFunction();">Blah</a>

而不是:

<a href="" onclick="someFunction();">Blah</a>

===============>>#2 票数:13

它不应该用在事件处理程序中(尽管大多数浏览器都是防御性的,并且不会惩罚你)。 我还认为它不应该用在锚的href属性中。 如果浏览器支持javascript,它将使用正确定义的事件处理程序。 如果浏览器没有,则javascript:链接将显示为已损坏。 IMO,最好将它们指向一个页面,说明他们需要启用javascript来使用该功能,或者更好的是非javascript所需的功能版本。 所以,像:

<a href="non-ajax.html" onclick="niftyAjax(); return false;">Ajax me</a>

编辑:想到使用javascript的一个很好的理由: 小书签。 例如,这个将您发送到谷歌阅读器以查看页面的RSS订阅源:

var b=document.body;
if(b&&!document.xmlVersion){
  void(z=document.createElement('script'));
  void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');
  void(b.appendChild(z));
}else{
  location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)
}

要让用户轻松添加此Bookmarklet,您可以将其格式化为:

<a href="javascript:var%20b=document.body;if(b&&!document.xmlVersion){void(z=document.createElement('script'));void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');void(b.appendChild(z));}else{location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)}">Drag this to your bookmarks, or right click and bookmark it!</a>

===============>>#3 票数:5

它应该只在href标签中使用。

这是荒谬的。

接受的方式是这样的:

<a href="/non-js-version/" onclick="someFunction(); return false">Blah</a>

但要回答OP,通常没有理由使用javascript:不再。 实际上,您应该从脚本中附加javascript事件,而不是在标记中内联。 但是,我觉得这是一个纯粹的事情:-D

===============>>#4 票数:2

javascript:的起源javascript:在事件处理程序中实际上只是IE特定的事情,因此除了处理程序之外,您还可以指定语言。 这是因为vbscript也是IE中支持的客户端脚本语言。 这是“vbscript:”的一个例子。

在其他浏览器中(正如Shadow2531所说) javascript:只是一个标签,基本上被忽略了。

正如DannySmurf指出的那样, href="javascript:..."可以在链接中用于执行javascript代码。

===============>>#5 票数:1

我不是JavaScript的权威,也许不是提问者的权威,而是AFAIK,区别在于javascript:前缀在URI-contexts中是首选/必需的,其中参数可以与传统的HTTP URL一样JavaScript触发器。

所以,我的直观答案是,因为onChange需要JavaScript, javascript:前缀是多余的(如果不是完全错误的)。 但是,您可以在地址栏中编写javascript:myFunction(this) ,然后运行该函数。 没有javascript: ,您的浏览器会尝试将myFunction(this)解释为URL并尝试获取DNS信息,浏览到该服务器等...

===============>>#6 票数:1

javascript:在JS代码中(如在onclick属性中)只是一个标签,用于与浏览器可能支持或不支持的continue / goto标签语句(可能不在任何地方)。 它可能是zipzambam:相反。 即使标签不能使用,浏览器仍然接受它,因此它不会导致错误。

这意味着,如果有人在onclick属性中抛出无用的标签,他们可能不知道他们正在做什么,只是复制和粘贴或者通过执行下面的习惯来做它。

javascript:在href属性中表示Javascript URI。

示例

javascript:(function()%7Balert(%22test%22)%3B%7D)()%3B

===============>>#7 票数:0

我不知道javascript:前缀是否意味着onevent属性中的任何内容,但我知道当尝试在新选项卡中打开链接时,它们在锚标记中很烦人。 href应该用作后退, 永远不要将javascript附加到链接。

===============>>#8 票数:0

@mercutio

这是荒谬的。

不,这不是荒谬的,javascript:是一个伪协议,确实只能用作链接的主题,所以他是对的。 您的建议确实更好,但最好的方法是使用不显眼的JavaScript技术迭代HTML元素并以编程方式添加行为,如jQuery等库中使用的那样。

===============>>#9 票数:0

基本上,在onchange="javascript: myFunction(this)"onchange="myFunction(this)"之间是否有任何明显的区别?

假设你的意思是href="javascript: myFunction(this)" ,是的,尤其是在使用javascript加载内容时。 使用javascript:pseudo协议使某些人和所有搜索引擎无法访问内容,而使用真实的href,然后使用javascript更改链接的行为,如果javascript被关闭或在特定客户端中不可用,则内容可访问。

===============>>#10 票数:0

Flubba:

使用javascript:HREF打破Firefox和其他浏览器中的“在新窗口中打开”和“在新标签中打开”。

这不是“错误”,但如果你想让你的网站难以导航......

  ask by Jesse Taber translate from so

未解决问题?本站智能推荐:

1回复

什么(如果有的话)是javascript keydown事件的优先级?

我正在尝试创建一个简单的javascript程序,它读取keydown事件并将它们转换为HTML画布上的移动。 到目前为止,我已经取得了相当大的成功,我遇到了一个奇怪的问题(我假设是)箭头键优先。 会发生的是,如果我握住右箭头,然后按下左箭头,则左箭头将接管。 如果我按住左箭头,然后按向右
1回复

javascript中的'和'之间的差异(如果有的话)[重复]

这个问题在这里已有答案: 在JavaScript中使用反引号字符(`)? 7个答案 最近遇到了一些使用`和'的JS代码。 我无法弄清楚每个撇号是否有不同的用法。 有没有?
2回复

深度对象在JavaScript中运行缓慢吗? 如果有的话

一个简单的问题:在较深的物体上使用浅物体有好处吗? 在编写代码时,我倾向于使用深层对象,以便易于理解和分类。 但是我想知道这个习惯是否会使我的代码变慢。 我已经做了测试,但是我不知道我做得是否正确。 //building necessary objects var a
1回复

内联事件处理程序中奇怪的JavaScript:标签的含义是什么? [重复]

这个问题已经在这里有了答案: 您是否需要在onclick中指定“ javascript:”? 8个答案 在一个问题中,我看到了包含 这有什么用途? 我这是我生命中的第一次。 我的意思是标签JavaScript: 。
4回复

javascript中的事件处理程序

我有这个片段,我想要做的是当你点击div时它不受鼠标悬停和鼠标移动的影响..非常感谢你的帮助..
3回复

JavaScript代码中的onclick事件处理程序,而不是html标签

当试图确保我的网页使用的是不引人注目的javascript时,我似乎无法使onclick事件在我的javascript中起作用,它仅作为html标签中的事件起作用。 这是代码 有什么理由对我不起作用? 因为我能找到的所有答案都说这是做到这一点的方法,在此先感谢
3回复

使用Javascript客户端的REST基本身份验证的安全缺陷是什么(如果有的话)?

我有这个应用程序,它包含一个REST后端,旨在处理来自HTML5 / JavaScript客户端(我也在构建)的请求。 我计划实现一种使用基本身份验证的身份验证机制,其中JavaScript客户端将在会话期间存储Base64编码用户的凭据。 这些凭据将与“授权:基本”标头中的每个REST
6回复

JavaScript条件快捷方式。 如果有更多的话

我们可以使用条件快捷方式使用多个if语句。
4回复

这是什么功能模式? 如果有的话

我发现自己一遍又一遍地写这样的代码,并且在思考。 必须有一个已知的模式,但是要仔细研究Ramda等不同功能库的文档。 我找不到比赛。 我应该使用什么? 我创建一个构建器实例,并调用map,创建一个新实例,并使用build / map方法返回一个对象。 状态在功能范围中捕获。 将
1回复

内联JavaScript似乎随机加载(如果有的话)

首先,如果这是一个简单的问题,我想对不起。 我对HTML / CSS领域还很陌生,甚至还没有使用Javascript。 这是我的问题。 我有一个网站正在为叔叔建立,您可以在此处查看 。 (尚处于Alpha之前的阶段,因此链接无法正常工作)。 它可以作为本地文件正常工作,但是一旦托管