我是否应该加上“我认为;javascript:";在html标签函数前面?

我是否应该加上“我认为;javascript:";在html标签函数前面?,javascript,html,Javascript,Html,可能重复: 比如说 <body onload="javascript:something();"> 在这段代码中,我应该把javascript: 一些代码附加到javascript: 但有些人没有 什么是安全和正确的?不。只需使用javascript即可 但就协议而言,我更喜欢使用onload方法。更好的解决方案是避免在标记中完全显式使用JavaScript,并使用类似的方法将其提取到单独的文件中;然后,您可以执行以下操作: $(function() { // Th

可能重复:

比如说

 <body onload="javascript:something();">

在这段代码中,我应该把
javascript:

一些代码附加到
javascript:

但有些人没有


什么是安全和正确的?

不。只需使用javascript即可


但就协议而言,我更喜欢使用
onload
方法。

更好的解决方案是避免在标记中完全显式使用JavaScript,并使用类似的方法将其提取到单独的文件中;然后,您可以执行以下操作:

$(function()
{
    // This will be run when the document is loaded.
    alert('foo');

    $('#some-link').click(function()
    {
        // This will be run when the element with id `some-link` is clicked.
        alert('bar');
    });
});

我建议做点类似的事情

<body>
...
<script>
function something() {}
window.onload = something;
</script>

...
函数something(){}
window.onload=某物;

这不是个好建议。JavaScript伪协议也不应该用于链接。如果要单击链接执行JavaScript代码,应将处理程序附加到onclick事件,该事件返回false。@吉米:这不是“协议”,而是“方案”。而且它也不是什么伪东西:它从v3(是的,v3)起就出现在IE中,从那以后所有的主流浏览器中都出现了。公平地说,锚定点在语义上可能没有意义,在这种情况下,语义中立的元素上的点击处理程序是一个更好的选择。但是,这并不是避免使用“javascript:”scheme.javascript的原因。javascript传统上被称为“伪协议”,因为与几乎所有其他方案不同,它并不表示位置,而是要在当前位置上执行的操作。不是定位符的URL实际上没有多大意义,事实上,接受
javascript:
URL(需要定位符)的问题在过去造成了无数的安全漏洞。也有可用性问题,例如,点击鼠标中键链接新建选项卡。。。哦,天哪,我有一个空标签,里面有一个JavaScript错误。现在,无论是否在草稿中记录,
JavaScript:
URL都是一场灾难,永远不应该在网页中使用。当Netscape试图通过在其他浏览器中破坏web来获得Navigator的竞争优势时,这是许多可怕的错误之一。虽然这些错误中的一些已经被纠正并从历史中抹去(例如,
),但
javascript:
就像一股臭味一样挥之不去。除了bookmarklet之外,任何东西都要避免。Duplicate:好吧,这真的很奇怪:我在上面写的评论是以“Duplicate”这个词开头的。我没有写一篇以“可能”开头的文章,这是我写的。@T.J.克劳德:这条评论是自动生成的,如果你是第一个投票支持某个复制品的人,它就会自动生成。。。有关使用jQuery分离关注点的信息,请参见:+1
$(function()
{
    // This will be run when the document is loaded.
    alert('foo');

    $('#some-link').click(function()
    {
        // This will be run when the element with id `some-link` is clicked.
        alert('bar');
    });
});
<body>
...
<script>
function something() {}
window.onload = something;
</script>