Articles of 浏览器

浏览器caching中的Zip文件

大家好 目前,我有一个NodeJS的Web应用程序在制作一个网站的数据抓取。 具体来说,这个Web应用程序为了下载它们而擦除图像。 例如,所有的图像永久链接都是从reddit的首页中截取的。 然后他们被发送到客户端单独下载。 我的问题是与网站我刮了可以有成千上万的图像。 如果将1000个以上的图像下载到下载文件夹,这会提供可怕的用户体验。 结果我有两个select。 A)下载到服务器上的临时文件夹。 压缩。 发送给客户端下载。 从服务器删除 B)将文件下载到浏览器caching。 压缩。 下载到指定的下载目录。 我的问题是, 选项B甚至可能吗? 我对整个过程相对比较陌生,我找不到任何东西来实际压缩浏览器caching中的文件。 我可以比较容易地实现选项A,但这需要大量的带宽,在DigitalOcean上我可以find大约5美元/每分钟的带宽。 然而,整个项目是一个学习经验,因此我希望能够pipe理浏览器caching中的文件。 我正在使用以下NPM模块: 的NodeJS performance Cheerio 请求 进一步更新 我遇到了一个名为jsZip的NPM插件: https ://stuk.github.io/jszip/ 但是,我并不知道它也可以在客户端实施。 这纯粹是我的错误。 这引出了一个有趣的WebStorage问题: https ://www.w3schools.com/html/html5_webstorage.asp 会话的最大存储大小是5MB 从这里我将尝试实现这个答案在这里: 你如何cachingJavaScript的图像到我当前的代码,并将更新这个答案与任何其他人面临这个问题的结果。

如何将对象parameter passing给browser.execute方法?

我正在尝试使用WebdriverIO的execute方法传递一个浏览器对象,如下所示: describe('reference', () => { it('test browser', () => { browser.execute(function(){ console.log('BROWSER:', browser); }); }); }); 但是有一个错误: 失败:未知错误:未定义浏览器 我如何将浏览器对象传递给自定义函数?

评估一个函数

我正在尝试创build一个小型库,您可以发送一个对象(具有函数)和一些数据以及参数,并将对象,数据和参数发送给工作进程,然后该进程将评估该对象以重build函数(从string到函数) 目前我有这个: JSON.stringify(object, function(key, val) { if typeof val === 'function' { return val + '' } return val }); 这个函数会将包含函数的对象串联起来。 在我的工作人员,我试图撤消这个过程。 我已经尝试了以下内容: eval(object)我也试图实现JSON.parse与eval()每个函数,当我碰到一个。 我也试过eval("return " + object.function) 这可能吗?

将Grunt命令行输出logging到浏览器

有一个简单的方法来logging一个grunt任务的命令行输出到浏览器? “日志”是指将命令行的input和/或输出显示在浏览器中。 我知道我可以写一个完整的应用程序来做到这一点,但有没有一个grunt插件或任何已经做到这一点? 我问的原因是因为我在这个网站上提出另一个问题 ,需要我显示一些grunt任务和他们的输出。 但是,有超过1个文件,而不是太长的文件,他们太长StackOverflow问题。 我想我可以上传文件到StackExchange并让回答者下载它们,或者创build一个JSFiddle。 我很想问我应该如何创buildJSFiddle。

Array.push()在重复的对象中,不正确或难以理解

我发现一个问题/不良行为Array.push() 。 我不知道如果我做错了什么或如果.push()方法不正确。 我将介绍一个我正在处理的事例 var x = []; function test() { var y = x; for(var i = 1; i<10; i++) { y.push(i); } alert("x = " + x); } alert("x = " + x); test(); //result: //1'st alert: x = //2'rd alert: x = 1,2,3,4,5,6,7,8,9 所以我的例子与我的项目中的真实问题是无法比拟的,我修正了这个问题:添加方法参数(x作为参数不与全局作用域共享)或克隆对象的情况。 问题 : 为什么在用y初始化y时执行推送时推送x ? 这个例子发生在跨浏览器,我想知道如果node.js做同样惊喜,现在的问题:我使用错误的.push()方法? 什么是从现有的对象初始化正确的方法。 也许我的问题是愚蠢的,但我找不到文件解释。 谢谢。

节点检测来自用户代理的不安全浏览器

我有一个节点REST API。 该API通常是从浏览器中使用的SDK中调用的。 为了使整个结构正常工作,由于产品严重依赖安全性,与API通话的浏览器具有良好的CSPRNG和适当的内容安全策略实施是非常重要的。 显然,实施的质量只能在有限的程度上得到validation,但为了保护那些毫无害处的用户,应该使用用户代理轻松识别旧的或危险的浏览器。 关于如何检测浏览器有很多问题,这本身并不是很难做到。 我的问题是,是否有用户代理列表不安全或旧/过时/弃用? 从用户代理string到漏洞的映射? 我怎样才能最好地实施这样一个系统?

将leveldb数据库传输到浏览器

我正在构build一个使用leveldb将客户数据存储在(node.js)服务器端的应用程序。 当客户访问该网站时,为了性能原因,我想将一大堆数据发送到浏览器。 由于leveldb在浏览器中运行,通过level-js,我想我只是在服务器上为客户创build一个SubLevel ,把它写到磁盘上,然后作为一个文件发送给客户。 我还没有findpipe理这个过程的任何软件包,或任何有关最佳实践的讨论。 是否有更好的方法来同步leveldb和level-js实例之间的数据?

NodeJS模拟浏览器获取/发布请求

当我search模拟浏览器的时候,结果有很多。 长话短说,我需要我的节点服务器来获取和发布请求。 通常我只是用http包做这个。 但是,另一方面有一些反脚本的东西。 即让服务器知道这是一个真正的浏览器的JavaScript。 所以,我需要这些被执行。 我实际上解决了这个问题,就像5年前,但我的网站只是使用PHP然后。 该解决scheme涉及到使用Qt Webkit小部件和假X服务器。 不够优雅,但是做起来很简单。 我在当时发现的Perl,PHP或Python中唯一的JavaScript引擎非常慢。 由于NodeJS是build立在V8上,所以我认为有一个简单的方法来做到这一点。 为了logging,我希望能得到一个以下的东西。 // Omitting some callbacks http.get('http://remote.site', function(res) { res.on('end', function() { // previously accumulated data is the page returned by // the request. Any thing found in a <script> tag would have // been executed. }); });

当pipe道/stream传输到浏览器时,HTML文件显示为明文

我有这个快速处理程序 router.get('/', ac.allow('Admin'), function (req, res, next) { let html = path.resolve(__dirname + '/../coverage/lcov-report/index.html'); fs.createReadStream(html).pipe(res); }); 问题是文件被发送到浏览器, 但它只是显示为纯文本,并没有得到渲染 …有趣的,但有道理。 有谁知道这是为什么?

解码特殊的西里尔文字符

运行下面的小代码时,terminal上会出现奇怪的字符: const http = require("http") http.get("http://www.pravda.com.ua/news/2017/10/6/7157464/", res => { res.on("data", e => console.log(e.toString())) }) …如: 为什么会这样呢? 当curl http://www.pravda.com.ua/news/2017/10/6/7157464/ ,我们得到原始问号(如: <title>? ? | ?? </title> )。 但是,浏览器似乎得到了好的字符<title>У Кахов…</title> 。 是发送不同内容的服务器还是客户端的解释方式(Node.js vs curl vs browser)?