镀金与化金有啥区别。他们俩者用在做PCB上那样好一点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了镀金与化金有啥区别。他们俩者用在做PCB上那样好一点相关的知识,希望对你有一定的参考价值。

参考技术A 镀金指的是电镀金,即工件作为阴极(这里指PCB板)在直流电的作用下金离子在工件表面放电,逐步形成金电镀层;化金指的是化学镀金,即无需外电源,仅靠镀液进行化学还原反应,使金属离子不断还原在工件表面上,形成金镀层。两者在PCB板上的应用各有特点,电镀金可以得到较大的镀层厚度和不同的硬度,既可以用在插头部分以提高耐磨性能(硬金),也可用在导线或其他导电部分。因为是要通电,PCB板应预留工艺导线,电镀结束后才能去除,工序上比较麻烦;化金不能镀较大的厚度,大多用在对金层要求不高的线路部分,不需预留工艺导线,加工简单,效率高、成本低,较适合大批量生产。本回答被提问者和网友采纳

event.stopPropagation 和 event.preventDefault 有啥区别?

【中文标题】event.stopPropagation 和 event.preventDefault 有啥区别?【英文标题】:What's the difference between event.stopPropagation and event.preventDefault?event.stopPropagation 和 event.preventDefault 有什么区别? 【发布时间】:2011-08-23 05:58:40 【问题描述】:

他们似乎在做同样的事情...... 一个现代的,一个古老的?或者它们是否被不同的浏览器支持?

当我自己处理事件(没有框架)时,我总是检查两者并执行两者(如果存在)。 (我也是return false,但我感觉不适用于node.addEventListener 附加的事件)。

那么为什么两者都有?我应该继续检查两者吗?还是真的有区别?

(我知道,有很多问题,但它们都差不多=))

【问题讨论】:

【参考方案1】:

stopPropagation 防止在捕获和冒泡阶段进一步传播当前事件。

preventDefault 阻止浏览器对该事件执行默认操作。

示例

preventDefault

$("#but").click(function (event) 
  event.preventDefault()
)
$("#foo").click(function () 
  alert("parent click event fired!")
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
  <button id="but">button</button>
</div>

停止传播

$("#but").click(function (event) 
  event.stopPropagation()
)
$("#foo").click(function () 
  alert("parent click event fired!")
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
  <button id="but">button</button>
</div>

对于stopPropagation,只有button 的点击处理程序 被调用,而div 的点击处理程序 永远不会触发。

如果你使用preventDefault,只有浏览器的默认操作会停止,但 div 的点击处理程序仍然会触发。

以下是来自 MDN 的关于 DOM 事件属性和方法的一些文档:

event.cancelBubble event.preventDefault() event.returnValue event.stopPropagation()

对于 IE9 和 FF,您可以使用 preventDefault 和 stopPropagation。

要支持 IE8 及更低版本,请将 stopPropagation 替换为 cancelBubble 并将 preventDefault 替换为 returnValue

【讨论】:

所以他们有很大的不同? IE 是否也有两种不同的事件方法? (它们可能是一样的吗??)框架在它们的event.stop 函数中都这样做很奇怪......也很奇怪,我从来没有遇到过这个问题。我经常使用冒泡。谢谢你的例子! 值得注意的是(如果你不看 MSDN 文档)cancelBubblereturnValue 都是属性(所以应该设置cancelBubble = true;),而preventDefaultstopPropagation 是方法(所以应该叫preventDefault(); @Raynos,请注意:event.stopPropagation() 不仅可以阻止事件在事件链中冒泡,还可以在捕获阶段停止事件传播 (developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation)跨度> 了解按钮单击的默认操作会很有帮助,这样我就可以推断为什么stopDefault()stopPropagation() 的工作方式不同。如果默认操作没有调用onclick 方法,那是什么? 按钮的默认浏览器行为是什么?【参考方案2】:

术语

来自quirksmode.org:

事件捕获

当你使用事件捕获时

| | ---------------| |----------------- |元素1 | | | | ------------| |----------- | | |元素2 \ / | | | ------------------------------------- | |事件捕捉 | ----------------------------------

element1 的事件处理器最先触发,element2 的事件处理器最后触发。

事件冒泡

当你使用事件冒泡时

/ \ ---------------| |----------------- |元素1 | | | | ------------| |----------- | | |元素2 | | | | | ------------------------------------- | |事件冒泡 | ----------------------------------

element2 的事件处理器最先触发,element1 的事件处理器最后触发。

在 W3C 事件模型中发生的任何事件都会首先被捕获,直到它到达目标元素,然后再次冒泡

| | / \ -----------------| |--| |----------------- |元素1 | | | | | | -------------| |--| |----------- | | |元素2 \ / | | | | | -------------------------------- | | W3C 事件模型 | ------------------------------------------

界面

来自w3.org,用于事件捕获

如果捕获 EventListener 希望阻止进一步处理 发生的事件可能会调用stopPropagation 的方法 Event 接口。这将阻止事件的进一步发送, 尽管在同一层次结构中注册了额外的EventListeners 级别仍然会收到该事件。一旦一个事件的stopPropagation 方法已被调用,对该方法的进一步调用没有 附加效果。如果没有额外的捕获器存在并且 stopPropagation 未被调用,事件触发 在目标本身上适当的EventListeners

对于事件冒泡

任何事件处理程序都可以选择通过以下方式阻止进一步的事件传播 调用Event接口的stopPropagation方法。如果有的话 EventListener 调用这个方法,所有额外的EventListeners 就在 当前的EventTarget 将被触发,但冒泡将停止 等级。只需致电stopPropagation 即可防止进一步 冒泡。

对于事件取消

通过调用EventpreventDefault来完成取消 方法。如果有一个或多个EventListeners 在此期间致电preventDefault 事件流的任何阶段都将取消默认操作。

示例

在以下示例中,单击 Web 浏览器中的超链接会触发事件流(执行事件侦听器)和事件目标的默认操作(打开新选项卡)。

HTML:

<div id="a">
  <a id="b" href="http://www.google.com/" target="_blank">Google</a>
</div>
<p id="c"></p>

JavaScript:

var el = document.getElementById("c");

function capturingOnClick1(ev) 
    el.innerHTML += "DIV event capture<br>";


function capturingOnClick2(ev) 
    el.innerHTML += "A event capture<br>";


function bubblingOnClick1(ev) 
    el.innerHTML += "DIV event bubbling<br>";


function bubblingOnClick2(ev) 
    el.innerHTML += "A event bubbling<br>";


// The 3rd parameter useCapture makes the event listener capturing (false by default)
document.getElementById("a").addEventListener("click", capturingOnClick1, true);
document.getElementById("b").addEventListener("click", capturingOnClick2, true);
document.getElementById("a").addEventListener("click", bubblingOnClick1, false);
document.getElementById("b").addEventListener("click", bubblingOnClick2, false);

Example 1: 结果是输出

DIV event capture
A event capture
A event bubbling
DIV event bubbling

Example 2:将stopPropagation()添加到函数中

function capturingOnClick1(ev) 
    el.innerHTML += "DIV event capture<br>";
    ev.stopPropagation();

输出结果

DIV event capture

事件侦听器阻止了事件的进一步向下和向上传播。但是它并没有阻止默认操作(打开新标签页)。

Example 3:在函数中添加stopPropagation()

function capturingOnClick2(ev) 
    el.innerHTML += "A event capture<br>";
    ev.stopPropagation();

或函数

function bubblingOnClick2(ev) 
    el.innerHTML += "A event bubbling<br>";
    ev.stopPropagation();

输出结果

DIV event capture
A event capture
A event bubbling

这是因为两个事件侦听器都注册在同一个事件目标上。事件侦听器阻止了事件的进一步向上传播。但是,它们并没有阻止默认操作(打开新标签页)。

Example 4:例如将preventDefault() 添加到任何函数中

function capturingOnClick1(ev) 
    el.innerHTML += "DIV event capture<br>";
    ev.preventDefault();

阻止新标签页打开。

【讨论】:

感谢捕获和冒泡之间更深层次的区别,而其他答案仅解决 jQuery 问题。【参考方案3】:

返回假;


return false; 在你调用它时会做 3 件不同的事情:

    event.preventDefault() – 它停止浏览器的默认行为。 event.stopPropagation() – 它防止事件传播(或“冒泡”)DOM。 停止回调执行并在调用时立即返回。

请注意,此行为与普通(非 jQuery)事件处理程序不同,其中值得注意的是,return false 不会阻止事件冒泡。

preventDefault();


preventDefault(); 做了一件事:它停止浏览器的默认行为。

何时使用它们?


我们知道它们的作用,但何时使用它们?简单地说,这取决于你想要完成什么。如果您想“只是”阻止默认浏览器行为,请使用 preventDefault();。使用返回假;当您想要阻止默认浏览器行为并阻止事件传播 DOM 时。在大多数情况下,您会使用 return false;你真正想要的是preventDefault()

示例:


让我们试着用例子来理解:

我们将看到纯 JAVASCRIPT 示例

示例 1:

<div onclick='executeParent()'>
  <a href='https://***.com' onclick='executeChild()'>Click here to visit ***.com</a>
</div>
<script>
  function executeChild() 
    alert('Link Clicked');
  

  function executeParent() 
    alert('div Clicked');
  
</script>

运行上面的代码你会看到超链接‘点击这里访问 ***.com‘ 现在,如果您先单击该链接,您将获得 javascript alert Link Clicked 接下来你会得到 javascript 警报 div Clicked 并立即将您重定向到 ***.com。

示例 2:

<div onclick='executeParent()'>
  <a href='https://***.com' onclick='executeChild()'>Click here to visit ***.com</a>
</div>
<script>
  function executeChild() 
    event.preventDefault();
    event.currentTarget.innerHTML = 'Click event prevented'
    alert('Link Clicked');
  

  function executeParent() 
    alert('div Clicked');
  
</script>

运行上面的代码你会看到超链接‘点击这里访问 ***.com‘现在如果你先点击那个链接你会得到 javascript alert Link Clicked 接下来你会得到 javascript alert div Clicked 接下来你会看到超链接“点击这里到 访问 ***.com 替换为文本“阻止点击事件” 您将不会被重定向到 ***.com。这是由于我们用来防止默认点击的 event.preventDefault() 方法 要触发的操作。

示例 3:

<div onclick='executeParent()'>
  <a href='https://***.com' onclick='executeChild()'>Click here to visit ***.com</a>
</div>
<script>
  function executeChild() 
    event.stopPropagation();
    event.currentTarget.innerHTML = 'Click event prevented'
    alert('Link Clicked');
  

  function executeParent() 
    alert('div Clicked');
  
</script>

这一次如果你点击 Link 函数 executeParent() 将不会 被调用,你不会得到 javascript 警报 div Clicked 这次。这是因为我们阻止了传播到 使用 event.stopPropagation() 方法的父 div。接下来你会看到 超链接“点击此处访问***.com”替换为文本 ‘点击事件将被执行’,您将立即 重定向到 ***.com。这是因为我们没有阻止 这次使用触发的默认点击操作 event.preventDefault() 方法。

示例 4:

<div onclick='executeParent()'>
  <a href='https://***.com' onclick='executeChild()'>Click here to visit ***.com</a>
</div>
<script>
  function executeChild() 
    event.preventDefault();
    event.stopPropagation();
    event.currentTarget.innerHTML = 'Click event prevented'
    alert('Link Clicked');
  

  function executeParent() 
    alert('Div Clicked');
  
</script>

如果你点击链接,函数 executeParent() 将不会 调用,您将不会收到 javascript 警报。这是由于我们 使用阻止传播到父 div event.stopPropagation() 方法。接下来你会看到超链接‘点击 在这里访问 ***.com 被文本“点击事件”替换 阻止',您将不会被重定向到 ***.com。这 是因为我们阻止了默认的点击动作触发 这次使用 event.preventDefault() 方法。

示例 5:

对于 return false,我有三个示例,所有示例似乎都在做完全相同的事情(只是返回 false),但实际上 结果大相径庭。以下是每个实际发生的情况 以上。

案例:

    从内联事件处理程序返回 false 会阻止浏览器导航到链接地址,但不会阻止事件通过 DOM 传播。 从 jQuery 事件处理程序返回 false 会阻止浏览器导航到链接地址并阻止事件通过 DOM 传播。 从常规 DOM 事件处理程序返回 false 绝对没有任何作用。

将看到所有三个示例。

    内联返回 false。

<div onclick='executeParent()'>
  <a href='https://***.com' onclick='return false'>Click here to visit ***.com</a>
</div>
<script>
  var link = document.querySelector('a');

  link.addEventListener('click', function() 
    event.currentTarget.innerHTML = 'Click event prevented using inline html'
    alert('Link Clicked');
  );


  function executeParent() 
    alert('Div Clicked');
  
</script>
    从 jQuery 事件处理程序返回 false

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <a href='https://***.com'>Click here to visit ***.com</a>
</div>
<script>
  $('a').click(function(event) 
    alert('Link Clicked');
    $('a').text('Click event prevented using return FALSE');
    $('a').contents().unwrap();
    return false;
  );
  $('div').click(function(event) 
    alert('Div clicked');
  );
</script>
    从常规 DOM 事件处理程序返回 false。

<div onclick='executeParent()'>
  <a href='https://***.com' onclick='executeChild()'>Click here to visit ***.com</a>
</div>
<script>
  function executeChild() 
    event.currentTarget.innerHTML = 'Click event prevented'
    alert('Link Clicked');
    return false
  

  function executeParent() 
    alert('Div Clicked');
  
</script>

希望这些例子很清楚。尝试在一个 html 文件中执行所有这些示例,看看它们是如何工作的。

【讨论】:

很好的例子,但如果没有 jQuery 会更好,因为 jQuery 伪造了事件对象,所以这在技术上是不同的。 @Rudie 我更新了我的答案并从中删除了 jquery,还添加了 return false 的示例。【参考方案4】:

这是here的引述

Event.preventDefault

preventDefault 方法可防止事件执行其默认功能。例如,您可以在 A 元素上使用 preventDefault 来阻止单击该元素离开当前页面:

//clicking the link will *not* allow the user to leave the page 
myChildElement.onclick = function(e)  
    e.preventDefault(); 
    console.log('brick me!'); 
;

//clicking the parent node will run the following console statement because event propagation occurs
logo.parentNode.onclick = function(e)  
    console.log('you bricked my child!'); 
;

当元素的默认功能被阻塞时,事件继续在 DOM 中冒泡。

Event.stopPropagation

第二种方法,stopPropagation,允许事件的默认功能发生,但阻止事件传播:

//clicking the element will allow the default action to occur but propagation will be stopped...
myChildElement.onclick = function(e)  
    e.stopPropagation();
    console.log('prop stop! no bubbles!'); 
;

//since propagation was stopped by the child element's onClick, this message will never be seen!
myChildElement.parentNode.onclick = function(e)  
    console.log('you will never see this message!'); 
;

stopPropagation 有效地阻止父元素了解其子元素的给定事件。

虽然简单的停止方法可以让我们快速处理事件,但它是 重要的是要考虑你到底想发生什么 冒泡。我敢打赌,开发人员真正想要的只是 preventDefault 90%的时间!错误地“停止”事件可能会导致您 无数的麻烦;您的插件可能无法正常工作,而您的 第三方插件可能会变砖。或者更糟糕的是——你的代码 破坏网站上的其他功能。

【讨论】:

【参考方案5】:

event.preventDefault() 阻止浏览器的默认行为(例如打开链接),但不会阻止事件冒泡 DOM。

event.stopPropagation()防止事件冒泡 DOM,但不会停止浏览器的默认行为。

return false;通常在 jQuery 代码中看到,它防止浏览器默认行为,防止事件冒泡 DOM,并立即从任何回调中返回。

查看此really nice & easy 4 min read 并查看上述文章的拍摄地点。

【讨论】:

【参考方案6】:

event.preventDefault(); 阻止元素的默认操作发生。

event.stopPropagation(); 防止事件在 DOM 树中冒泡,防止任何父处理程序收到事件通知。

例如,如果在DIVFORM 内附加了一个带有click 方法的链接,该链接也附加了一个click 方法,它将阻止DIVFORM click 方法触发。

【讨论】:

【参考方案7】:

Event.preventDefault- 停止浏览器默认行为。现在是浏览器默认行为。假设你有一个锚标签,它有一个 href 属性,并且这个锚标签嵌套在一个有点击事件的 div 标签内。锚标记的默认行为是单击它应该导航的锚标记时,但 event.preventDefault 所做的是在这种情况下停止导航。但它永远不会停止事件的冒泡或事件的升级,即

<div class="container">
 <a href="#" class="element">Click Me!</a>
</div>

$('.container').on('click', function(e) 
 console.log('container was clicked');
);

$('.element').on('click', function(e) 
  e.preventDefault(); // Now link won't go anywhere
  console.log('element was clicked');
);

结果将是

“元素被点击”

“容器被点击”

现在 event.StopPropation 它停止事件冒泡或事件升级。现在有了上面的例子

$('.container').on('click', function(e) 
  console.log('container was clicked');
);

$('.element').on('click', function(e) 
  e.preventDefault(); // Now link won't go anywhere
  e.stopPropagation(); // Now the event won't bubble up
 console.log('element was clicked');
);

结果将是

“元素被点击”

有关更多信息,请参阅此链接 https://codeplanet.io/preventdefault-vs-stoppropagation-vs-stopimmediatepropagation/

【讨论】:

【参考方案8】:

$("#but").click(function(event)
console.log("hello");
  event.preventDefault();
 );


$("#foo").click(function()
 alert("parent click event fired !");
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo">
  <button id="but">button</button>
</div>

【讨论】:

以上是关于镀金与化金有啥区别。他们俩者用在做PCB上那样好一点的主要内容,如果未能解决你的问题,请参考以下文章

目前PCB板焊盘有:沉金板、化金板、电金板、闪金板等称呼。 想问一下哪些意思是一样的,哪些是有区别的?

在PCB行业中有化金和沉金这两种工艺,请问他们的具体有啥区别?

PCB采用镀银和镀锡的有啥区别?

大家好,有个小问题请教一下,PCB板是镀镍还是镀金啊?都干啥用的啊

何謂硬金軟金電鍍金化金閃金?

PCB表面处理钴金、厚金的区别?