说我有一个像下面这样的Javascriptstring var fnStr = "function(){blah1;blah2;blah3; }" ; (这可能来自用户input的expression式,经过适当的消毒处理,也可能是一些符号计算的结果,这并不重要)。 我想定义fn ,就好像下面这行代码在我的代码中一样: var fn = function(){blah1;blah2;blah3; } ; 我怎么做? 我想到的最好的是以下几点: var fn = eval("var f = function(){ return "+fnStr+";}; f() ;") ; 这似乎是伎俩,即使它使用了可怕的eval() ,并使用了一个稍微复杂的参数。 我可以做得更好吗? 也就是说不使用eval() ,或者提供一个简单的参数?
我以这样的方式承诺, function getMode(){ var deferred = Promise.defer(); checkIf('A') .then(function(bool){ if(bool){ deferred.resolve('A'); }else{ return checkIf('B'); } }).then(function(bool){ if(bool){ deferred.resolve('B'); }else{ return checkIf('C'); } }).then(function(bool){ if(bool){ deferred.resolve('C'); }else{ deferred.reject(); } }); return deferred.promise; } checkIf返回一个promise,并且是checkIf 不能被修改 。 如何在第一场比赛中突围? (除了明确抛出错误以外的任何方式?)
我如何通过一个JavaScript脚本请求一个PHP页面并将数据传递给它? 那我如何让PHP脚本将数据传回给JavaScript脚本呢? client.js: data = {tohex: 4919, sum: [1, 3, 5]}; // how would this script pass data to server.php and access the response? server.php: $tohex = … ; // How would this be set to data.tohex? $sum = …; // How would this be set to data.sum? // How would this be sent to […]
我想从Javascript运行一个.exe文件。 这是我的: var oShell = new ActiveXObject(“Shell.Application”); var commandtoRun =“C:\ Documents and Settings \ User \ Desktop \ ABCD.exe”; oShell.ShellExecute(commandtoRun, “”, “”, “打开”, “1”); 如果我只有前两行代码,它似乎工作正常(它问我,当我第一次在IE中打开时,我想要activeX),但如果我添加最后一行(ShellExecute)似乎是一个错误。 我想将parameter passing给exe。 有谁知道如何做到这一点?
我正在尝试使用承诺实现一个while循环。 这里概述的方法似乎工作。 http://blog.victorquinn.com/javascript-promise-while-loop它使用这样的function var Promise = require('bluebird'); var promiseWhile = function(condition, action) { var resolver = Promise.defer(); var loop = function() { if (!condition()) return resolver.resolve(); return Promise.cast(action()) .then(loop) .catch(resolver.reject); }; process.nextTick(loop); return resolver.promise; }; 这似乎使用反模式和弃用的方法,如投和延期。 有没有人知道一个更好或更现代的方式来实现这一目标? 谢谢
我想将一个数字转换成一个类似Stack Overflow声望显示的格式的string表示。 例如 999 =='999' 1000 =='1,000' 9999 =='9,999' 10000 =='10k' 10100 == '10 .1k'
呃我不确定有没有人遇到过这个问题 在IE6上有一个简单的描述,任何<select>对象都会显示在任何其他项目上,甚至是div的…这意味着如果你有一个奇特的javascript效果,显示应该在所有东西上的div(例如:lightbox,multibox等..)onclick一个特定的元素,该div重叠一个<select>你的div get的显示,就好像它在<select> [在这种情况下,最大和最小的z索引不起作用] 我试过Googlesearch,并find了iframe填充解决scheme 但我想要一些相当干净的替代品或更好,但有人find了一个更好的解决scheme? 因为使用iframe的方法使用大约130mb的ram可能会减慢穷人的机器
我在尝试使用asynchronous数据初始化filter时遇到了问题。 filter非常简单,它需要将path转换为名称,但是为此需要一个对应数组,我需要从服务器获取数据。 在返回函数之前,我可以在filter定义中做些事情,但是asynchronous方面阻止了这一点 angular.module('angularApp'). filter('pathToName', function(Service){ // Do some things here return function(input){ return input+'!' } } 使用承诺可能是可行的,但我没有任何清楚的理解如何angular度加载filter。 这篇文章解释了如何通过服务实现这样的魔法,但是对于filter也可以这么做吗? 如果任何人对如何翻译这些path有更好的想法,那么我都是耳朵。 编辑: 我尝试着承诺,但是有些事情是不对的,我看不出什么: angular.module('angularApp').filter('pathToName', function($q, Service){ var deferred = $q.defer(); var promise = deferred.promise; Service.getCorresp().then(function(success){ deferred.resolve(success.data); }, function(error){ deferred.reject(); }); return function(input){ return promise.then( function(corresp){ if(corresp.hasOwnProperty(input)) return corresp[input]; else return input; } ) }; }); 我并不是很有承诺的家庭,是使用它们的正确方法吗?
在我的脚本之一,我有这个代码: var webSocket = window.WebSocket || window.MozWebSocket; window.ws = new webSocket('ws://64.121.210.140:2585/consoleappsample', 'my-protocol'); 哪个工作正常。 但是,当用户更改页面时,我必须重新build立连接。 我相信这是我的代码导致的问题,因为如果客户端发送数据到服务器,然后更改页面,数据可能不会收到和竞争条件发生。 我试图把window.ws放在全局范围内,但似乎没有解决这个问题。 有什么办法可以使WebSockets连接在页面之间保持连接,所以连接不需要不断重新build立?
我有一个倒数计时器,倒计时到2014年1月1日上午8点。 我正在使用下面的代码来设置date: var futureDate = new Date(2014, 0, 1, 8, 0, 0, 0); 这工作,但我想进一步,并将其设置为一个特定的时区。 在我的情况下,UTC -7。 我已经阅读了这个答案 ,说使用: new Date(Date.UTC(year, month, day, hour, minute, second)) 但我感到困惑的是我如何将时区设置为UTC -7,而我在线阅读的内容只会让我更加困惑。 有人可以解释Date.UTC是如何工作的,以及如何设置时区,以便我的倒计时时钟正在根据指定的时区倒计时? 注意:任何答案必须是客户端唯一的代码。