Questions tagged «javascript»

有关在ECMAScript(JavaScript / JS)及其各种方言/实现(不包括ActionScript)中进行编程的问题。此标记很少单独使用,但最常与标记[node.js],[jquery],[json]和[html]关联。


11
防止浏览器在HTML5历史记录popstate上滚动
发生popstate事件时,是否可以防止滚动文档的默认行为? 我们的网站使用jQuery动画滚动和History.js,并且状态更改应使用户通过pushstate或popstate滚动到页面的不同区域。问题是浏览器在发生popstate事件时会自动恢复先前状态的滚动位置。 我尝试使用设置为文档宽度和高度100%的容器元素,并在该容器内滚动内容。我发现的问题是,它似乎不像滚动文档那样平滑。尤其是在使用大量css3(例如框阴影和渐变)的情况下。 我还尝试了在用户启动滚动期间存储文档的滚动位置,并在浏览器滚动页面后(在popstate上)恢复了它的位置。在Firefox 12中可以正常工作,但在Chrome 19中,由于正在滚动和还原页面,因此会出现闪烁。我认为这与滚动和被触发的滚动事件(恢复滚动位置)之间的延迟有关。 Firefox在popstate触发之前先滚动页面(并触发scroll事件),Chrome先触发popstate然后再滚动文档。 我见过的所有使用历史API的网站都使用与上述类似的解决方案,或者在用户后退/前进时忽略滚动位置更改(例如GitHub)。 是否可以防止在popstate事件中根本滚动文档?

10
是否可以将简单的html和javascript文件结构上传到heroku?
我正在尝试将我的一个开放源代码项目部署到heroku,这必然非常简单,只需静态html和javascript。但是它们不支持静态网站吗?如果我不打算使用除html和javascript之外的任何东西,我宁愿不将其设为Sinatra项目。 ~/sites/d4-site $ heroku create --stack cedar Creating quiet-ice-4769... done, stack is cedar http://quiet-ice-4769.herokuapp.com/ | git@heroku.com:quiet-ice-4769.git Git remote heroku added ~/sites/d4-site $ git remote -v heroku git@heroku.com:quiet-ice-4769.git (fetch) heroku git@heroku.com:quiet-ice-4769.git (push) ~/sites/d4-site $ git push heroku master Counting objects: 53, done. Delta compression using up to 2 threads. Compressing objects: …

8
jQuery的UI日期选择器更改Z索引
这个问题很简单,尽管我很难弄清楚如何解决它。 我正在使用jQuery-ui datepicker以及自定义的“ ios样式开/关切换”。此切换开关使用一些绝对定位的元素,这些元素当前显示在我的日期选择器顶部。 请参阅下面覆盖7月6日的丑陋圈子... 做这件事的肮脏方法(至少是imo)是在我的一个样式表中编写样式,但是我宁愿在启动选择器时使用一些javascript来完成此工作。 我已经尝试过了 $('.date_field').datepicker(); $('.date_field').datepicker("widget").css({"z-index":100}); 和 $('.date_field').datepicker({ beforeShow: function(input, inst) { inst.dpDiv.css({"z-index":100}); } }); 但似乎每次启动日期选择器时z-index都会被覆盖。 任何帮助表示赞赏!

5
图例中的HighCharts隐藏系列名称
我尝试多次解决此问题并放弃。现在,当我再次遇到他时,我决定寻求帮助。 我的图例有以下代码: legend: { layout: 'vertical', align: 'right', verticalAlign: 'top', x: -10, y: 100, borderWidth: 0, labelFormatter: function() { if(this.name!='Series 1') { return this.name; } else { return 'Legend'; } } } 如果我将返回值从“传奇”更改为“”,则不会显示文字,但图例顶部仍会出现“破折号”。如果我不使用标签格式化程序功能,那么我将具有“系列1” +“破折号”,就像图例中的第一行一样。如何隐藏它们? 请注意我的版本是:Highcharts-2.0.5 这是我的图例和要删除的破折号的简单视图:

13
TypeScript“保存时编译”功能在Visual Studio 2015中不起作用
升级到Visual Studio 2015后,“保存时编译”功能对我不起作用。当我更改.ts项目中的文件并保存时,IDE底部的状态栏显示Output(s) generated successfully,但生成的.js文件没有没改变。 这是我尝试过的: <Project>在my的根元素中添加以下内容.csproj: <PropertyGroup> <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled> </PropertyGroup> 在Tools -> Options -> TypeScript -> Project以下选项中选中和取消选中“自动编译不属于项目的TypeScript文件”选项: 仔细检查以确保在我项目的TypeScript Build属性中选中了“保存时编译”: 我想念什么? 附带说明一下,当由常规构建触发时,TypeScript编译步骤确实可以按预期工作。

5
Webpack不排除node_modules
我正在将webpack用于要构建的Node框架(尽管我应该应该使用gulp)。当我包含EJS模块时,即使我明确告诉它要排除node_modules目录,Webpack也会将其包含在已编译的源代码中。 module.exports = { context: __dirname, target: 'node', // ... output: { libraryTarget: 'commonjs' // ... }, module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader?{ "stage": 0, "optional": ["runtime"] }' } ] } }; 如您所见,我对JS文件进行了测试,并告诉它排除了node_modules。为什么忽略我的排除?


6
Javascript中键/值对的对象与数组
假设您有一个非常简单的数据结构: (personId, name) ...并且您想将其中一些存储在javascript变量中。如我所见,您有三个选择: // a single object var people = { 1 : 'Joe', 3 : 'Sam', 8 : 'Eve' }; // or, an array of objects var people = [ { id: 1, name: 'Joe'}, { id: 3, name: 'Sam'}, { id: 8, name: 'Eve'} ]; // or, …


5
使用Lodash将JavaScript数组拆分为多个块
我需要将一个JavaScript数组拆分成多个n大小的块。 例如:鉴于此数组 ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13"] 和n等于4,输出应该是这样的: [ ["a1", "a2", "a3", "a4"], ["a5", "a6", "a7", "a8"], ["a9", "a10", "a11", "a12"], ["a13"] ] 我知道有解决此问题的纯JavaScript解决方案,但是由于我已经在使用Lodash,所以我想知道Lodash是否可以为此提供更好的解决方案。 编辑: 我创建了一个jsPerf测试来检查下划线解决方案的速度。

11
将数据传递到jQuery UI对话框
我正在开发一个ASP.Net MVC网站,在该网站上,我在一个表中列出了来自数据库查询的一些预订,并带有ActionLink来取消特定行上的预订,BookingId例如: 我的预订 <table cellspacing="3"> <thead> <tr style="font-weight: bold;"> <td>Date</td> <td>Time</td> <td>Seats</td> <td></td> <td></td> </tr> </thead> <tr> <td style="width: 120px;">2008-12-27</td> <td style="width: 120px;">13:00 - 14:00</td> <td style="width: 100px;">2</td> <td style="width: 60px;"><a href="/Booking.aspx/Cancel/15">cancel</a></td> <td style="width: 80px;"><a href="/Booking.aspx/Change/15">change</a></td> </tr> <tr> <td style="width: 120px;">2008-12-27</td> <td style="width: 120px;">15:00 - 16:00</td> <td style="width: 100px;">3</td> <td …


8
浏览器内JavaScript是否需要节点样式?
浏览器内的JavaScript是否有提供与Node相同的灵活性/模块化/易用性的库require? 提供更多细节:原因require如此好: 允许从其他位置动态加载代码(在我看来,这在样式上比在HTML中链接所有代码要好) 它为构建模块提供了一致的界面 模块很容易依赖其他模块(因此,我可以编写一个需要jQuery的API,以便我可以使用 jQuery.ajax() 加载的javascript是作用域的,这意味着我可以加载var dsp = require("dsp.js");并且可以访问dsp.FFT,而不会干扰本地var FFT 我还没有找到可以有效执行此操作的库。我倾向于使用的解决方法是: coffeescript-concat-需要其他js很容易,但是您必须对其进行编译,这意味着它对于快速开发(例如,在测试中构建API)的功能不太好 RequireJS-它很流行,简单易用,可解决1-3,但是缺乏作用域是一个真正的难题(我相信head.js的相似之处在于它缺乏作用域,尽管我从未有过使用它的机会。同样,LABjs可以加载并.wait()确实缓解依赖关系问题,但仍不进行范围界定) 据我所知,似乎有许多动态和/或异步加载javascript的解决方案,但它们往往具有与仅从HTML加载js相同的范围问题。最重要的是,我想要一种加载javascript的方法,它完全不会污染全局名称空间,但是仍然允许我加载和使用库(就像节点的require一样)。 2020年更新: 模块现已成为ES6中的标准组件,并且自2020年中期开始,大多数浏览器都原生支持这些模块。模块支持同步和异步(使用Promise)加载。我当前的建议是,大多数新项目应使用ES6模块,并使用转译器回退到旧版浏览器的单个JS文件。 作为一般原则,今天的带宽通常也比我最初提出这个问题时要宽得多。因此,在实践中,您可能会合理地选择始终将转译器与ES6模块一起使用,并将精力集中在代码效率而不是网络上。 以前的编辑(或者,如果您不喜欢ES6模块):自编写此文档以来,我已经广泛使用RequireJS(现在它的文档更加清晰)。在我看来,RequireJS确实是正确的选择。我想澄清一下该系统如何为像我一样困惑的人们工作: 您可以require在日常开发中使用。模块可以是函数(通常是对象或函数)返回的任何东西,范围可以作为参数。您还可以将项目编译为单个文件以进行部署r.js(实际上,尽管require可以并行加载脚本,但这样做几乎总是更快)。 RequireJS和节点样式的require之间的主要区别在于,例如browserify(tjameson建议一个很酷的项目)使用的是模块的设计和需求方式: RequireJS使用AMD(异步模块定义)。在AMD中,require获取要加载的模块(javascript文件)列表和回调函数。加载每个模块后,它将使用每个模块作为回调的参数来调用回调。因此,它确实是异步的,因此非常适合Web。 节点使用CommonJS。在CommonJS中,require是一个阻塞调用,它将加载模块并将其作为对象返回。这对于Node来说效果很好,因为文件是从文件系统中读取的,速度足够快,但在Web上效果不佳,因为同步加载文件可能需要更长的时间。 实际上,许多开发人员在使用AMD之前就已经使用过Node(因此也使用了CommonJS)。此外,许多库/模块是为CommonJS(通过向exports对象添加内容)而不是为AMD(通过从define函数返回模块)而编写的。因此,许多由Node.com转变为Web的开发人员都希望在Web上使用CommonJS库。这是可能的,因为<script>标签的加载受到阻碍。诸如browserify之类的解决方案采用CommonJS(Node)模块并将其包装起来,以便可以将它们包含在脚本标签中。 因此,如果您正在开发自己的Web多文件项目,强烈建议使用RequireJS,因为它确实是Web的模块系统(尽管公平地公开,我发现AMD比CommonJS自然得多)。最近,区别变得不那么重要了,因为RequireJS现在允许您实质上使用CommonJS语法。此外,RequireJS可用于在Node中加载AMD模块(尽管我更喜欢node-amd-loader)。

15
如何检查Cookie是否存在?
检查cookie是否存在的好方法是什么? 条件: Cookie存在,如果 cookie1=;cookie1=345534; //or cookie1=345534;cookie1=; //or cookie1=345534; 如果不存在Cookie, cookie=; //or <blank>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.