当前位置: 首页 > 面试题库 >

将JavaScript代码放入的不同方法之间有什么区别?

钱修雅
2023-03-14
问题内容

我已经看到以下将JavaScript代码放入<a>标签中的方法:

function DoSomething() { ... return false; }
  1. <a href="javascript:;" onClick="return DoSomething();">link</a>
  2. <a href="javascript:DoSomething();">link</a>
  3. <a href="javascript:void(0);" onClick="return DoSomething();">link</a>
  4. <a href="#" onClick="return DoSomething();">link</a>

我了解尝试放置有效URL而不只是JavaScript代码的想法,以防万一用户未启用JavaScript。但是出于讨论的目的,我需要假定JavaScript已启用(没有JavaScript,他们将无法登录)。

我个人喜欢选项2,因为它使您可以看到要运行的内容–在调试将参数传递到函数的位置时特别有用。我已经使用了很多,还没有发现浏览器问题。

我已经读过人们推荐4,因为它给用户提供了一个真正的链接,但是#并不是“真实的”。绝对不会到哪里去。

当您知道用户已启用JavaScript时,是否存在不支持或非常糟糕的应用?

相关问题:Href for JavaScript链接:“#”还是“javascript:void(0)”?。


问题答案:

我非常喜欢Matt Kruse的JavascriptBestPractices文章。他在其中指出,使用该href部分执行JavaScript代码是一个坏主意。即使您已声明用户必须启用JavaScript,但也没有理由没有一个简单的HTML页面,href如果有人在登录后碰巧关闭了JavaScript,则所有JavaScript链接都可以指向其相应部分。我强烈建议您仍然允许这种备用机制。这样的事情将遵循“最佳实践”并实现您的目标:

<a href="javascript_required.html" onclick="doSomething(); return false;">go</a>


 类似资料:
  • 问题内容: Hibernate有几种方法,它们以一种或另一种方式将您的对象放入数据库。它们之间有什么区别,何时使用它们?为什么不只有一种智能的方法知道何时使用什么? 到目前为止,我已经确定的方法是: 问题答案: 这是我对方法的理解。这些主要基于API,尽管我在实践中并未全部使用。 saveOrUpdate 根据某些检查调用保存或更新。例如,如果不存在标识符,则调用save。否则,将调用更新。 保存

  • 问题内容: 我尝试了几种向表添加滚动的方法,但是只有其中一种可以正常工作。它们之间有什么区别? 第一: 第二: 第三: 第四: 问题答案: Element.scrollIntoView() 方法将调用该元素的元素滚动到浏览器窗口的视口中。 句法: //布尔参数 //对象参数 您的用例: :这行代码会将元素滚动到浏览器窗口的可见区域。 :此代码行将滚动元素以使其与可滚动祖先的视口顶部对齐。此选项对应

  • 问题内容: 使用和调用函数有什么区别? 与 前述两种方法之间是否存在性能差异?什么时候最好使用over ,反之亦然? 问题答案: 不同之处在于,您可以使用数组作为函数来调用函数。需要明确列出参数。有用的助记是 “ 甲用于 一个rray和ç为 ÇOMMA”。 有关apply和call的信息,请参见MDN的文档。 伪语法: 从ES6开始,数组也可以与该函数一起使用,您可以在此处查看兼容性。 样例代码:

  • 在另一个关于将字符串作为字符数组进行单步执行的线程中,提示这个问题的具体注释是“注意,此技术给您的是字符,而不是代码点,这意味着您可能获得代理项。”我不是真的理解,所以我想最好是在一个新的问题中要求澄清,而不是对一个5年前的问题进行一系列的评论。

  • 问题内容: 我正在尝试对术语“字符”,“代码点”和“代理”进行解释,尽管这些术语不仅限于Java,但如果存在特定于语言的差异,我希望将其解释为它与Java有关。 我发现了一些有关字符和代码点之间差异的信息,字符是为人类用户显示的内容,代码点是对该特定字符进行编码的值,但是我不知道代理。什么是代理,它们与字符和代码点有何不同?我对字符和代码点是否有正确的定义? 在另一个关于将字符串作为字符数组步进的

  • 问题内容: 在iOS上,证书,密钥和信任服务API包含以下填充类型: 苹果CDSA邮件列表上的用户说“ kSecPaddingPKCS1与PKCS#1 1.5相同”。证书,密钥和信任服务参考使用“将完成标准ASN.1填充以及基础RSA操作的PKCS1填充”来注释后三种填充类型。 有什么区别kSecPaddingPKCS1? 是kSecPaddingPKCS1仅仅根据RFC 3447的基本RSA运算