Tag: JavaScript

获取指定位置的元素 – JavaScript

使用Javascript,我怎么能在一个给定的位置识别元素? 基本上我正在寻找写一个函数,它接受两个input参数(x和y坐标),并返回html元素在屏幕上由参数表示的位置。

Chrome扩展程序如何将许多文件保存到用户指定的目录?

我正在使用Chrome扩展作为内部工具。 其要求的行为是: 作为页面操作,在查看特定的Intranet页面时启用地址栏图标。 当用户点击图标时,识别页面上某个媒体types(比如说.jpg)的所有文件 静静地将它们全部保存到用户本地驱动器上的目录中。 这个问题之前已经被问过了 ,但是答案是“ 使用NPAPI ”, NPAPI现在是失效的 。 那么,现在有什么办法可以实现呢? 我看过的是: chrome.FileSystem API–但是这不会将文件保存在任何用户可访问的位置。 相反,存储的文件隐藏在未公开目录中的混淆名称后面 。 用户要求文件以原始名称存储在可访问的目录中。 HTML5下载属性 ,通过创build一个data:URL并以编程方式点击它。 这会popup每个文件的“另存为…”对话框,当单个页面上有一百个资源时,这是不可接受的。 用户需要下载文件,而不需要单一图标点击以外的进一步交互。 Chrome下载API ,但只能在testing版和开发者版中使用。 用户需要使用主streamChrome的扩展程序。 通过创build一个小的.exe文件来简单地将文件保存到磁盘,然后将.jpg作为一个blob传递给它,使用本地消息API 。 这似乎非常麻烦,我甚至不知道如何可靠地通过大块到EXE这样的。 我可以尝试另一种方法吗?

跨浏览器书签/添加到collections夹JavaScript

是否有任何跨浏览器的书签/添加到使用JavaScript的collections夹。 search了一些列表,但没有任何工作。 你可以请任何build议吗?

如何将asynchronous函数调用包装到Node.js或Javascript中的同步函数中?

假设你维护一个公开函数getData的库。 您的用户称之为获取实际数据: var output = getData(); 数据保存在文件中,所以你使用Node.js内置的fs.readFileSync来实现getData 。 很显然, getData和fs.readFileSync都是同步函数。 有一天,您被告知将底层数据源切换到一个只能asynchronous访问的回购库(如MongoDB)。 你也被告知要避免让用户streamgetData , getData API不能改变只返回一个promise或者需要一个callback参数。 你如何满足这两个要求? 使用callback / promise的asynchronous函数是JavasSript和Node.js的DNA。 任何不平凡的JS应用程序可能渗透了这种编码风格。 但这种做法很容易导致所谓的厄运callback金字塔。 更糟糕的是,如果调用链中的任何调用者的代码都依赖于asynchronous函数的结果,那么这些代码也必须被包装在callback函数中,并且对调用者施加编码风格约束。 有时我会发现需要将asynchronous函数(通常在第三方库中提供)封装到同步函数中,以避免大规模的全局重构。 在这个主题上寻找解决scheme通常最终会得到Node Fibers或npm包。 但纤维丝毫无法解决我所面临的问题。 即使Fibers的作者提供的例子也说明了这一缺陷: … Fiber(function() { console.log('wait… ' + new Date); sleep(1000); console.log('ok… ' + new Date); }).run(); console.log('back in main'); 实际产出: wait… Fri Jan 21 2011 22:42:04 GMT+0900 (JST) back […]

对<a>标签使用preventDefault()

我有一些HTML / jQuery的幻灯片上下显示/隐藏它,当一个链接被点击: <ul class="product-info"> <li> <a href="#">YOU CLICK THIS TO SHOW/HIDE</a> <div class="toggle"> <p>CONTENT TO SHOW/HIDE</p> </div> </li> </ul> 和我的jquery $('div.toggle').hide(); $('ul.product-info li a').click(function(event){ $(this).next('div').slideToggle(200); } ); 我的问题是:我如何使用preventDefault()来停止作为链接的链接,并添加#到我的URL的末尾跳转到页面的顶部? 我无法弄清楚正确的语法,我只是不断收到一个错误,说preventDefault()不是一个函数。

没有办法在JavaScript中有基于类的对象?

基于JavaScript原型的面向对象编程风格很有趣,但是在很多情况下,你需要能够从一个类创build对象。 例如在一个vector绘图应用程序中,工作区通常在绘图的开始处是空的:我不能从现有的一个创build一个新的“线”。 更一般地说,每个dynamic创build对象的情况都需要使用类。 我已经阅读了很多教程和书“Javascript:好的部分”,但是在我看来,没有办法定义尊重1)封装和2)有效的成员方法声明的类(我的意思是:成员方法被定义一次,并在每个类实例之间共享)。 要定义私有variables,正在使用闭包: function ClassA() { var value = 1; this.getValue = function() { return value; } } 这里的问题是,“ClassA”的每个实例都有自己的成员函数“getValue”副本,效率不高。 为了有效地定义成员函数,正在使用原型: function ClassB() { this.value = 1; } ClassB.prototype.getValue = function() { return this.value; } 这里的问题是成员variables“value”是公开的。 我不认为这个问题可以很容易地解决,因为在创build对象的时候需要定义“私有”variables(这样对象可以访问创build的上下文,而不会泄露值),而基于原型的成员函数定义必须在创build对象之后完成,所以原型才有意义(“this.prototype”不存在,我已经检查过)。 还是我错过了什么? 编辑: 首先,感谢你的有趣答案。 我只是想为我的最初信息添加一点精确度: 我真正想要做的是有1)私有variables(封装是好的,因为人们只能访问他们所需要的)和2)有效的成员方法声明(避免副本)。 看来简单的私有variables声明实际上只能通过javascript中的闭包实现,这就是为什么我关注基于类的方法。 如果有一种方法可以通过基于原型的方法实现简单的私有variables声明,那对我来说就没有问题了,我不是一个激烈的基于类的方法proponnent。 阅读答案后,似乎简单的解决办法是忘记私有,并使用特殊的编码惯例,诋毁其他程序员直接访问“私人”variables… 我同意,我的标题/第一句对我想在这里讨论的问题有误导性。

使用JavaScript授权Google Drive

我试图授权我的应用程序与Google云端硬盘集成。 Google文档提供了基于服务器的授权和各种服务器技术的代码示例的详细信息 还有一个JavaScript Google API库 ,支持授权。 在维基的示例部分,有一个代码片段用于创buildconfiguration并调用授权function 。 我已经改变了我认为是驱动器所需的范围: var config = { 'client_id': 'my_client_ID', 'scope': 'https://www.googleapis.com/auth/drive.file' }; gapi.auth.authorize(config, function() { console.log(gapi.auth); }); 从来没有调用callback函数(是的,谷歌API库被加载更正)。看看Java的取回和使用OAuth 2.0凭据的例子,客户端的秘密似乎是一个参数,如果这进入configuration? 有没有人在JS,Drive或其他Google API上试过这个? 有没有人知道debugging这样一个问题的最佳途径,也就是说,我是否需要一步步走过图书馆,并停止呼啸? 请不要build议在服务器端进行授权,我们的应用程序完全是客户端,我不想在服务器上的任何状态(我理解这将导致令牌刷新问题)。 我熟悉Google控制台中的APIconfiguration,我相信和驱动器SDK设置是正确的。

如何在用户将视图滚动到视图中时dynamic(或延迟)加载图像

我已经注意到这在许多“现代”的网站(如Facebook和谷歌图片search),只有当用户向下滚动页面足够使他们进入可见的视口区域内的折叠下的图像( 查看源代码,页面显示X数量的<img>标签,但不能直接从服务器获取 )。 这种技术叫做什么,它是如何工作的,以及在多less浏览器中工作。 有没有一个jQuery插件,可以用最less的代码来实现这个行为。 编辑 奖金:有人可以解释是否有一个“onScrolledIntoView”或类似的事件的HTML元素。 如果不是,这些插件如何工作?

Facebook如何在浏览器地址栏中重写页面的源URL?

转到http://www.facebook.com/facebook?v=wall ,然后单击信息选项卡。 内容将被加载,地址栏现在变成http://www.facebook.com/facebook?v=info,但网页没有重新加载。 起初我认为这是Ajax,但我的问题是,如何更改地址栏而不重新加载? 我知道我可以改变锚(#墙)使用JS,但querystring(?V =墙),如何?

如何在jQuery中存储全局值(不一定是全局variables)?

目前,我正在使用一大堆JavaScript,jQuery,Microsoft客户端JavaScript和其他库的遗留网页上工作。 底线 – 我不能从头开始重写整个页面,因为业务无法certificate它的正确性。 所以……就是这样。 无论如何,我需要污染(我真的没有试过)全局命名空间与variables。 有三个选项我正在考虑 – 只需使用正常的JavaScript声明来存储/检索它 – var x = 0; 使用jQuery存储/检索DOM标签中的值 – $("body").data("x", 0); 使用隐藏的表单字段,并设置/检索值与jQuery – $("whatever").data("x", 0); 有没有更好的办法? 我看着现有的一堆代码,我不相信variables可以在一个函数中作用域。