Questions tagged «javascript»

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

5
在Handlebars.js中使用预编译的模板(jQuery Mobile环境)
我在预编译Handlebars中的模板方面有些挣扎。我的jQuery Mobile项目在模板方面越来越大,我希望预先编译所使用的模板。 但是我似乎找不到很好的解释(如循序渐进的教程)来说明如何使用把手。 我仍然使用script标签将所有模板内联。我已经使用NPM安装了车把。但是现在我有点迷失了如何进行。 我猜正在做类似的事情 handlebars -s event.handlebars > event.compiled 并以某种方式包括event.compiled内容?但是,怎么称呼它。 我这样称呼我的模板 var source = $('#tmpl_profile').html(), template = Handlebars.compile(source), context = user.profile()), html = template(context); 希望有人能为我阐明这一点。


2
骨干模型上的初始化和构造函数有什么区别
骨干模型上的initialize和构造函数有什么区别。 当我扩展骨干模型(ParentModel)时,我使用initialize方法来设置任何默认属性。但是每当我基于ParentModel创建一个Model时,我都会使用构造函数来运行任何初始功能。我这样做是因为它可以工作,但是有人在问我为什么同时使用初始化和构造函数,但除了工作之外,我没有一个好的答案。我可以花一些时间阅读源代码以弄清楚它,但是在这里询问并获得正确的答案似乎要容易得多。 var ParentModel = Backbone.Model.extend({ initialize : function() { // code here }, }); var Model = ParentModel.extend({ constructor : function (options) { Backbone.Model.prototype.constructor.call(this, options); // code here },

5
在JavaScript块上使用HTML注释仍然有意义吗?
过去,人们通常将HTML注释标签包装在JavaScript块周围,以防止“较旧的”浏览器显示脚本。即使Lynx足够聪明,也可以忽略JavaScript,那么为什么有些人会继续这样做呢?这些天有什么正当理由吗? <script type="text/javascript"> <!-- //some js code //--> </script> 编辑:我遇到过一种情况。在“设计视图”中,某些代码编辑器(例如Dreamweaver)会在JavaScript字符串中被带引号的HTML引起混淆,并尝试将其显示为页面的一部分。
67 javascript  html 

6
jQuery document.ready与Phonegap deviceready
我正在用jquery制作phonegap应用程序。我很困惑我是否应该换我整个里面的代码jQuery的$(document).ready()像 $(document).ready(function(){ //mycode }); 或在phonegap的deviceready事件中,例如 document.addEventListener("deviceready", function(){ //mycode }); 我目前正在使用,document.ready但是如果尝试访问其中的某些Phonegap API方法,我想可能会遇到问题document.ready。 将代码包装在document.ready或deviceready中是最好的事件?

3
Angular.js中基于单元测试承诺的代码
我在尝试在Angularjs中测试基于承诺的代码时遇到了困难。 我的控制器中有以下代码: $scope.markAsDone = function(taskId) { tasksService.removeAndGetNext(taskId).then(function(nextTask) { goTo(nextTask); }) }; function goTo(nextTask) { $location.path(...); } 我想对以下情况进行单元测试: 什么时候markAsDone被调用tasksService.removeAndGetNext 当tasksService.removeAndGetNext是做了应该改变的位置(调用goTo) 在我看来,没有简单的方法可以分别测试这两种情况。 我测试第一个是: var noopPromise= {then: function() {}} spyOn(tasksService, 'removeAndGetNext').andReturn(noopPromise); 现在,要测试第二种情况,我需要创建另一个永远都是假的承诺resolved。这一切都非常乏味,并且有很多样板代码。 还有其他测试方法吗?还是我的设计有异味?

3
在doc上执行写入:除非已明确打开,否则无法从异步加载的外部脚本写入文档。
我试图在页面加载执行后加载某个脚本,如下所示: function downloadJSAtOnload(){ var element = document.createElement("script"); element.src = "scriptSrc"; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else window.onload = downloadJSAtOnload; 尽管此脚本似乎执行并下载了“ scriptSrc”,并将其附加在body标签末尾之前,但它在控制台(chrome)中产生以下消息(不是错误) 无法在“文档”上执行“写入”:无法通过异步加载的外部脚本写入文档,除非已明确打开该文档。 这到底是什么意思?我应该做些不同的事情吗?即使我得到了预期的行为?

8
SIMILE时间轴的替代品,可实现时间轴可视化?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 因此,我在使用SIMILE Timeline的过程中一直玩得很开心,但不幸的是,它似乎几乎被遗弃了(最近关闭的票证是2009年5月),并且充满了内存泄漏,尤其是在动态加载和卸载事件时(尤其是当就我而言)。 我是JavaScript的新手,因此调试这些泄漏将变得更加复杂。在我全神贯注地以一种我不懂的语言或一个我从未看过的代码库解决问题之前,我想知道是否有什么东西可以与Timeline所提供的功能集进行比较: 一个频段上有多个事件 而不是拥有10、100、1000行数据,请尽可能使用可用空间来容纳一行中的多个事件 可卷动 CSS样式化到特定事件 如果需要,我可以为每个事件指定特定的图标,字体等。这对于突出显示错误事件或有趣的事件非常有用 过滤/搜索/突出显示 突出显示某个时间段或某个时间点 这可能是显示“现在”时刻的垂直范围,也可能是覆盖时间段开始和结束时间的范围 我知道很多这些功能都可以放入Flot或HighCharts之类的东西中,但是这些东西几乎免费供我在Timeline中使用,因此我在权衡成本/收益是否更容易解决问题。内存泄漏或在某些没有库的库中推出3-4个功能。我的直觉说:“解决泄漏,这很容易”,但是我想知道是否有人可以向我展示一些东西,这些东西大概占到那里的90%,而进入其他那10%的门槛很低。

3
KnockoutJS中的$ data变量的来源和目的是什么?
在KnockoutJS教程中,我偶然发现了以下代码示例,其中包含无法解释的变量$data。 视图(html): <!-- Folders --> <ul class="folders" data-bind="template: { name: 'folderTemplate', foreach: folders }"></ul> <script type="text/html" id="folderTemplate"> <li data-bind="css: { selected: $data == mailViewModel.selectedFolder() }, click: function() { mailViewModel.selectFolder($data) }"> ${$data} </li> </script> 视图模型(JavaScript): var viewModel = { // Data folders: ['Inbox', 'Archive', 'Sent', 'Spam'], selectedFolder: ko.observable('Inbox'), // Behaviours selectFolder: …

4
可访问性和所有这些JavaScript框架
一段时间以来,我一直在研究一些JavaScript框架,例如Backbone.js和Batman.js,尽管我真的很喜欢它们,但我有一个小话题要回头再谈。那个问题是可访问性。 作为Web开发人员,我一直试图使我的网站和应用程序具有可访问性,尤其是使用渐进增强的想法。 显然,这些新的JS框架并不能很好地降级,因此我想知道其他开发人员在此问题上有何想法,您对此打算做什么。毕竟,在许多国家/地区,网站/应用的可访问性并不是一项可选的事情,因为它是法律的一部分。 也许我只是对这个主题过于热心,而没有意识到在可访问性方面已经走了多远。

6
如何在Firebug中编辑JavaScript?
我只能通过“脚本”面板查看网站的JavaScript文件。我该如何编辑?我尝试了所有操作,例如双击要编辑的行等,但它不允许我进行编辑。 如果移到HTML选项卡,则可以通过单击“编辑”按钮来编辑HTML ,但不能编辑JavaScript。

5
让requirejs与Jasmine一起使用
我首先要说的是,我是RequireJS的新手,甚至是茉莉花的新手。 我在SpecRunner上遇到一些问题,需要JS。我一直在关注Uzi Kilon和Ben Nadel(以及其他一些人)的教程,它们对一些人有所帮助,但是我仍然遇到一些问题。 看来,如果测试中抛出错误(我可以特别想到一个错误,即类型错误),则将显示spec运行器html。这告诉我,javascript中存在一些问题。但是,修复这些错误后,不再显示HTML。 我根本无法显示测试运行程序。有人可以发现我的代码有问题导致此问题吗? 这是我的目录结构: Root |-> lib |-> jasmine |-> lib (contains all of the jasmine lib) |-> spec |-> src |-> jquery (jquery js file) |-> require (require js file) index.html (spec runner) specRunner.js 这是SpecRunner(索引)HTML: <!doctype html> <html lang="en"> <head> <title>Javascript Tests</title> <link rel="stylesheet" href="lib/jasmine/lib/jasmine.css"> <script …

6
AngularJS将忽略HTTP标头中的Set-Cookie
我正在基于客户端的AngularJS和基于Java的服务器的Java(Tomcat + WS的Jersey)开发应用程序。 我的API的某些路径受到限制,如果用户没有会话,则返回的响应状态为401。在客户端,将拦截401 http状态以将用户重定向到登录页面。 用户通过身份验证后,我将在服务器端创建一个会话 httpRequest.getSession(true); 并且发送给客户端的响应的标头中确实包含Set-cookie指令: Set-Cookie:JSESSIONID = XXXXXXXXXXXXXXXXXXXXX; 域=本地主机; 路径= / api /; HttpOnly 问题是cookie永远不会放在客户端。当我检查本地域的cookie时,它为空,因此下一个请求的标头中没有此cookie,并且客户端仍然无法访问我的API的受限路径。 客户端和服务器位于同一个域中,但是它们没有相同的路径和端口号: 客户: http://localhost:8000/app/index.html 服务器: http://localhost:8080/api/restricted/ 附加信息:双方都启用了CORS: “访问控制允许方法”,“获取,发布,选项” “访问控制允许来源”,“ *” “访问控制允许凭据”,true 有任何使Set-cookie正常工作的想法吗?这是与AngularJS相关的问题吗?

4
在浏览器中为一个网页执行了多少个JavaScript程序?
JavaScript程序由语句和函数声明组成。执行JavaScript程序时,将发生以下两个步骤: 将扫描代码以查找函数声明以及每个函数。声明是“执行的”(通过创建函数对象),并且创建了对该函数的命名引用(以便可以在语句中调用此函数) 语句按顺序执行(求值)(如代码中所示) 因此,这可以正常工作: <script> foo(); function foo() { return; } </script> 尽管“ foo”函数在声明之前被调用,但是它起作用,因为该函数声明是在语句之​​前求值的。 但是,这不起作用: <script> foo(); </script> <script> function foo() { return; } </script> 将引发ReferenceError(“未定义foo”)。得出这样的结论:网页HTML代码中的每个SCRIPT元素都代表一个单独的JavaScript程序,并且每当HTML解析器遇到SCRIPT元素时,它都会在该元素中执行该程序(然后执行该程序,解析器将转到SCRIPT元素后面的HTML代码)。 再一次,这确实可行: <script> function foo() { return; } </script> <script> foo(); </script> 我在这里的理解是,全局对象(在全局执行上下文中用作变量对象)一直存在(并保持),因此第一个JavaScript程序将创建函数对象并为其进行引用,然后第二个JavaScript程序将使用该引用来调用该函数。因此,所有JavaScript程序(在单个网页内)“使用”相同的Global对象,并且随后运行的所有JavaScript程序都可以观察到一个JavaScript程序对Global对象所做的所有更改。 现在,请注意... <script> // assuming that foo is not defined foo(); alert(1); </script> …

10
错误:尝试在已清除的作用域上运行编译脚本
自从升级到Firefox 4.0之后,我注意到控制台有时会出现错误: 尝试在已清除的范围内运行编译脚本 我目前在网上可以找到的关于此的唯一信息是在mozilla groups论坛上,该论坛建议与会话还原有关。就我而言,尽管我无法可靠地重现该错误,但它随时发生,而不仅仅是在还原之后发生。 这是怎么回事?如何停止错误?

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.