我花了几天的时间来更新我的个人网站。 我的个人网站的url是(我的名字)(我的姓).com,因为我的姓氏很不寻常,而且我很幸运地拿起域名。 我的电子邮件地址是(我的名字)@(我的姓).com。 所以,真的,当它来到猜测,这不是很难。 无论如何,我想整合一个mailto:链接到我的网站,所以人们可以联系我。 而且,尽pipe我的电子邮件地址不是很难猜到,但我宁愿没有通过垃圾邮件机器人收集垃圾邮件,他们只是抓取网站的电子邮件地址模式,并将其添加到他们的数据库。 什么是我最好的方式来混淆我的电子邮件地址,最好是链接forms? 我所知道的方法是: <a href="mailto:x@y.com">e-mail me</a> 它的工作原理,但也意味着,一旦我的网站打到谷歌,我会涉水通过垃圾邮件作为垃圾邮件机器人轻松挑选我的电子邮件地址。 <img src="images/e-mail.png" /> 这是不太可取的,因为不仅游客不能点击它给我发送电子邮件,但更聪明的垃圾邮件机器人可能会检测到图像包含的字符。 我知道可能没有完美的解决scheme,但我只是想知道大家认为最好的。 我肯定愿意使用JavaScript,因为我的网站已经使用了它的吨。
我有一个div,当我的网页第一次加载时,从顶部大约100px(它拥有一些button等页面)。 当用户滚动过去时,我想让div“跟随”用户,因为它附着在屏幕的顶部。 当用户返回到页面顶部时,我希望它回到原来的位置。 Visualization – xxxxx is the div: Default (page load) User vertically scrolled well past it ——— ——— | | |xxxxxxx| < after div reaches top of screen when |xxxxxxx| | | page is scrolled vertically, it stays | | | | there ——— ———
我正在编写一个网站,旨在从桌面和平板电脑中使用。 从桌面访问时,我希望屏幕上的可点击区域具有以下特性:hover效果(不同背景颜色等)使用平板电脑时,没有鼠标,因此我不希望有任何悬浮效果。 问题是,当我点击平板电脑上的东西,浏览器显然有一种“隐形鼠标光标”,它移动到我点击的位置,然后离开它 – 所以我刚刚点击的东西点亮了一个hover效果,直到我点击别的东西。 当我使用鼠标时,如何获得hover效果,但在使用触摸屏时会将其抑制? 如果有人想提出这个build议,我不想使用用户代理嗅探。 相同的设备可以同时具有触摸屏和鼠标(今天可能不那么常见,但在将来会更加如此)。 我对该设备不感兴趣,我对如何使用鼠标或触摸屏感兴趣。 我已经尝试过hook touchstart , touchmove和touchend事件,并且在所有这些事件上调用preventDefault() ,这样做在一定程度上抑制了“隐形鼠标光标”。 但是如果我在两个不同的元素之间来回切换,几次点击之后,它就会开始移动“鼠标指针”并照亮hover效果 – 就像我的preventDefault并不总是被尊重。 除非有必要,否则我不会对您有任何疑问 – 我甚至不知道这是正确的做法。 如果任何人有一个更简单的修复,我都耳朵。 编辑:这可以用bog标准的CSS :hover ,但这里有一个快速repro作为参考。 <style> .box { border: 1px solid black; width: 150px; height: 150px; } .box:hover { background: blue; } </style> <div class="box"></div> <div class="box"></div> 如果你把鼠标放在任何一个盒子上,它会得到一个蓝色的背景,我想要的。 但是,如果你点击任何一个框,它也会得到一个蓝色的背景,这是我试图阻止的事情。 我也在这里发布了一个样例,并且还钩住了jQuery的鼠标事件。 您可以使用它来查看轻敲事件也会触发mouseenter , mousemove和mouseleave 。
我偶然发现了将DOM NodeList转换为常规数组的简洁捷径,但是我必须承认,我并不完全理解它是如何工作的: [].slice.call(document.querySelectorAll('a'), 0) 所以它开始于一个空的数组[] ,然后slice被用来将call的结果转换为一个新的数组呀。 我不明白的是call 。 如何将document.querySelectorAll('a')从NodeList转换为常规数组?
我正在迁移到Redux。 我的应用程序由很多部分(页面,组件)组成,所以我想创build许多reducer。 Redux示例显示我应该使用combineReducers()来生成一个reducer。 另外据我所知Redux应用程序应该有一个商店,它是一旦应用程序启动时创build。 当商店正在创build时,我应该通过我的组合减速机。 如果应用程序不是太大,这是有道理的。 但是,如果我构build多个JavaScript包,该怎么办? 例如,每个应用程序页面都有自己的包。 我认为在这种情况下,联合减速机是不好的。 我查看了Redux的源代码,发现了replaceReducer()函数。 这似乎是我想要的。 我可以为我的应用程序的每个部分创build组合的replaceReducer()器,并在应用程序的各个部分之间移动时使用replaceReducer() 。 这是一个好方法吗?
有两种不同的方法可以在JavaScript中创build一个空对象: var objectA = {} var objectB = new Object() 脚本引擎如何处理它们有什么不同? 有没有任何理由相互使用? 同样,也可以使用不同的语法创build一个空数组: var arrayA = [] var arrayB = new Array()
我有一个JavaScript数组dataArray ,我想推入一个新的数组newArray 。 除了我不想newArray[0]是dataArray 。 我想推入所有的值到新的数组: var newArray = []; newArray.pushValues(dataArray1); newArray.pushValues(dataArray2); // … 甚至更好: var newArray = new Array ( dataArray1.values(), dataArray2.values(), // … where values() (or something equivalent) would push the individual values into the array, rather than the array itself ); 所以现在新的数组包含了各个数据数组的所有值。 有没有像pushValues这样的速记,所以我不必迭代每个单独的dataArray,将值1加1?
ECMAScript 6中引入的WeakMap数据结构的实际用途是什么? 由于弱映射的关键字会强烈引用其对应的值,因此,只要其关键字仍然存在,确保插入弱映射的值不会消失,因此不能用于备注表,caching或其他任何你通常使用弱引用,弱值的地图等。 在我看来,这是: weakmap.set(key, value); 这只是一个迂回的说法: key.value = value; 我错过了哪些具体的用例?
我在https://developer.mozilla.org/en/DOM/element.addEventListener阅读文章,但无法理解useCapture属性。 定义有: 如果为true,则useCapture表示用户希望启动捕获。 启动捕获之后,指定types的所有事件将被分派到注册的侦听器,然后被分派到DOM树下的任何EventTargets。 在树中冒泡的事件不会触发指定使用捕获的侦听器。 在这段代码中父事件触发子之前,所以我不能理解它的行为。文件对象有usecapture true,子div有usecapture设置为false,文件usecapture被跟踪。所以为什么文件属性比孩子更喜欢。 function load() { document.addEventListener("click", function() { alert("parent event"); }, true); document.getElementById("div1").addEventListener("click", function() { alert("child event"); }, false); } <body onload="load()"> <div id="div1">click me</div> </body>
最近我看到一些带有一些JavaScript库(如Angular )的.js.map扩展的文件,这只是在我的脑海里提出了一些问题: 这是为了什么? 为什么Angular关心的人要提供一个.js.map文件? 我如何(作为一个JavaScript开发人员)使用angular.min.js.map文件? 我应该关心为我的JavaScript应用程序创build.js.map文件吗? 它是如何创build的? 我看了一下angular.min.js.map ,里面填充了奇怪格式的string,所以我认为它不是手动创build的。