Tag: JavaScript

我怎样才能模拟点击一个锚标签?

我想模拟点击一个锚点标签与所有额外的东西,如正确的目标处理。 锚点的DOM对象似乎有一个“[click()] [3]”方法,但不是所有的浏览器都支持这个方法。 Firefox会抛出这个错误: 错误:anchorObj.click不是一个函数 它在Opera 10和Konqueror上的工作也很奇怪,当它在一个周围的div的onclick处理程序中被调用时会造成无限的点击。 我猜只有IE8可以正常工作。 无论如何,我不希望它,因为主要浏览器大多有问题。 我在Mozilla论坛中为Firefoxfind了这个备用解决scheme: var evt = document.createEvent("MouseEvents"); evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); anchorObj.dispatchEvent(evt); 这对我来说似乎太难看又笨拙。 我不知道它是多么兼容,我想尽可能避免编写浏览器特定的代码。 我不能使用location.href = anchorObj.href; 因为它不处理“目标”属性。 我可以根据目标的价值做一些硬编码,但是我也想避免这种情况。 有build议切换到JQuery,但我不知道如何处理目标属性,因为我以前没有用过它。

查找多个JavaScript数组之间的匹配

我有多个string值的数组,我想比较它们,只保留所有这些匹配结果相同。 给出这个例子代码: var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza']; var arr2 = ['taco', 'fish', 'apple', 'pizza']; var arr3 = ['banana', 'pizza', 'fish', 'apple']; 我想要产生以下数组,其中包含来自所有给定数组的匹配: ['apple', 'fish', 'pizza'] 我知道我可以结合所有的数组与var newArr = arr1.concat(arr2, arr3); 但是这只是给了我一个arrays,加上重复的东西。 这可以轻松完成,而不需要像underscore.js这样的库的开销? (太好了, 现在我也饿了!) 编辑我想我应该提到,可能有一个未知量的数组,我只是用3作为一个例子。

在Javascript中处理float精度

我在javascript中有大量的数值y 。 我想通过将它们四舍五入到x的最接近的倍数并将结果转换为一个string。 我如何解决烦人的浮点精度? 例如: 0.2 + 0.4 = 0.6000000000000001 我已经尝试了两件事情: >>> y = 1.23456789 >>> x = 0.2 >>> parseInt(Math.round(Math.floor(y/x))) * x; 1.2000000000000002 和: >>> y = 1.23456789 >>> x = 0.2 >>> y – (y % x) 1.2000000000000002

如何使用jQuery公开IFrame的DOM?

我有一个代表特殊IFrame的原型。 该原型有一个名为GoToUrl(…)的函数,可以在IFrame中打开给定的URL。 我的问题是:如何创build一个“InternalDOM”属性,并使该属性引用IFrame内的“窗口”对象(根DOM对象)? 以这样的方式:如果我的IFrame公开了一个页面,其中有一个对象X的“窗口”对象,我可以这样做: MyFrameObject.GoToUrl(pageXurl); MyFrameObject.InternalDOM.X 任何帮助,将不胜感激。 PS:我会接受不一定与jQuery相关的答案,但我更喜欢jQuery解决scheme。

JavaScript / Ajax中的HTTP HEAD请求?

是否可以单独使用JavaScript中的XMLHTTPRequest执行HTTP头部请求? 我的动机是节约带宽。 如果没有,是否有可能伪造它?

尝试在脚本标记上触发onload事件

我试图按顺序加载一组脚本,但是onload事件并没有为我开火。 var scripts = [ '../../../ajax/libs/less.js/1.3.3/less.min.js', '//cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.min.js', MK.host+'/templates/templates.js' ]; function loadScripts(scripts){ var script = scripts.shift(); var el = document.createElement('script'); el.src = script; el.onload = function(script){ console.log(script + ' loaded!'); if (scripts.length) { loadScripts(scripts); } else { console.log('run app'); MK.init(); } }; $body.append(el); } loadScripts(scripts); 我猜想,当使用jQuery将元素附加到DOM时,像el.onload这样的本地事件不会触发。 如果我使用本机document.body.appendChild(el)那么它按预期触发。

如何获得与JavaScript选定的HTML文本?

我可以使用下面的代码来获取选定的文本: text=window.getSelection(); /// for Firefox text=document.selection.createRange().text; /// for IE 但是,我怎样才能得到所选的Html,其中包括文本和HTML标签?

如何深入克隆在JavaScript中

你如何深入克隆一个Javascript对象? 我知道有基于像JSON.parse(JSON.stringify(o))和$.extend(true, {}, o)框架的各种function$.extend(true, {}, o)但我不想使用这样的框架。 创build深度克隆的最优雅或有效的方法是什么? 我们关心像克隆数组这样的边缘情况。 不打破原型链,处理自我参考。 我们不关心支持DOM对象的拷贝,因为.cloneNode就是因为这个原因而存在的。 由于我主要想在node.js使用深度克隆,所以使用V5引擎的ES5function是可以接受的。 [编辑] 在任何人build议之前,让我提一下,通过原型从对象inheritance并克隆它来创build拷贝之间有明显的区别。 前者弄乱了原型链。 [进一步编辑] 看完你的回答后,我发现克隆整个物体是一个非常危险和困难的游戏,令人讨厌的发现。 以下面的基于闭包的对象为例 var o = (function() { var magic = 42; var magicContainer = function() { this.get = function() { return magic; }; this.set = function(i) { magic = i; }; } return new magicContainer; }()); var n = clone(o); […]

请求的资源错误中没有“Access-Control-Allow-Origin”标题

我正在尝试获取新闻网站的Feed。 以为我会使用谷歌的饲料API将feedburner饲料转换成JSON。 以下url将以json格式返回Feed中的10条信息。 http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://feeds.feedburner.com/mathrubhumi 我用下面的代码来获取上面的url的内容 $.ajax({ type:"GET", dataType:"jsonp", url:"http://ajax.googleapis.com/ajax/services/feed/load", data:{"v":"1.0", "num":"10", "q":"http://feeds.feedburner.com/mathrubhumi"}, success: function(result){ //….. } }); 但它不工作,我得到以下错误 XMLHttpRequest无法加载http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http%3A%2F%2Ffeeds.feedburner.com%2Fmathrubhumi 。 请求的资源上没有“Access-Control-Allow-Origin”标题。 Origin'http:// localhost '因此不被允许访问。 我该如何解决?

使用点符号string访问对象的子属性

我暂时停留在看起来很简单的JavaScript问题上,但也许我只是错过了正确的search关键字! 说我们有一个对象 var r = { a:1, b: {b1:11, b2: 99}}; 有几种方法可以访问99: rbb2 r['b']['b2'] 我想要的是能够定义一个string var s = "b.b2"; 然后访问99使用 rs or r[s] //(which of course won't work) 一种方法是写一个函数来分割string上的点,也许recursion/迭代获取属性。 但有没有更简单/更有效的方法? 任何有用的jQuery API在这里?