我正在尝试Chrome for Mac OS上的开发者工具,我发现了一个巨大的烦恼.我没有看到一个明显的方法让工具窗口附加到我正在检查的页面底部,就像在Firebug和Safari中一样
我对这段代码中效率更高的其他一些看法很感兴趣.基本上在下面的代码中,有一个setInterval循环,我需要在代码在循环中运行之前满足4个要求.所以在第1节我写了一个if语句检查所有4.工作正常.
然后我切换到只使用try/catch,我想要执行的代码坐在try {}中.逻辑是在每个循环期间,将生成异常但针对每个无效条件进行抑制.在所有条件都为真的最后一个循环中,代码执行并清除间隔.
要么有效.我喜欢try/catch方法,因为我需要编写更少的条件代码并担心破坏.但是我担心try/catch的效率非常低,特别是在一个100ms的setInterval()循环中.关于SO的其他聪明人的一些看法是什么?
试着抓
var intvar = setInterval(function(){
try{
clearInterval(intvar);
jQuery('#'+nav[pageid].t1+'>a').replaceWith(jQuery('<span>'+jQuery('#'+nav[pageid].t1+'>a').text()+'</span>'));
//set display classes for nav
jQuery('#'+nav[pageid].t1).addClass('selected').find('#'+nav[pageid].t2).addClass('subselect'); //topnav
jQuery('#'+nav[pageid].t3).addClass('selected').find('#'+nav[pageid].t4).addClass('subselect'); //leftnav
}catch(err){}
},100);
Run Code Online (Sandbox Code Playgroud)
IF块
var intvar = setInterval(function(){
if(typeof jQuery == 'function' && typeof nav == 'object' && typeof pageid != 'undefined' && typeof document.getElementById('leftnav') == 'object'){
clearInterval(intvar);
jQuery('#'+nav[pageid].t1+'>a').replaceWith(jQuery('<span>'+jQuery('#'+nav[pageid].t1+'>a').text()+'</span>'));
//set display classes for nav
jQuery('#'+nav[pageid].t1).addClass('selected').find('#'+nav[pageid].t2).addClass('subselect'); //topnav
jQuery('#'+nav[pageid].t3).addClass('selected').find('#'+nav[pageid].t4).addClass('subselect'); //leftnav
}
},100);
Run Code Online (Sandbox Code Playgroud) Firefox中最新版本的Firebug感觉它们已经倒退了.表现糟透了.这是我团队中每个人的共同抱怨,也是越来越多的其他网络开发人员在线投诉.
是否有任何替代扩展的Firefox提供类似的功能(DOM检查器,网络选项卡,控制台)?
我已经从一个内置的src nginx 1.2.6安装转移到了Ubuntu 13.04上的1.4.1.
通过Ubuntu PPA安装,http: //wiki.nginx.org/Install#Ubuntu_PPA .这一切都很有效.
手动,我可以使用重新加载/启动/停止服务
sudo service nginx <command>
Run Code Online (Sandbox Code Playgroud)
服务器重启后,nginx不会自行启动.
在我之前的手动安装中,我在/ etc/init中有一个手写的Upstart脚本,运行正常.PPA安装已经设置了/etc/init.d/脚本,所以我想坚持使用PPA方法而不是黑客入侵.
可能是因为我对服务界面不是很熟悉,所以我缺少了一些东西.
我还检查了/var/log/nginx/access.log和error.log,看到在启动过程中没有记录任何内容.
我该怎么做才能解决这个问题?
我正在试图找出如何使用单个webpack配置文件,该文件适用于使用es2015预设转换服务器(node.js)js和客户端js.目前,我必须专门设置"target:'node'"才能正确处理基于节点的文件.如果我不这样做,那么webpack会根据默认的"target:'web'"进行转换.然后报告错误,因为明确导入的"mysql"模块不适用于Web.
如何将两者统一到同一个配置文件中,以便服务器和客户端js将单独转换?或者我完全需要单独的配置?
示例webpack.config.js
'use strict';
var path = require('path');
var webpack = require('webpack');
module.exports = {
target: 'node',
resolve: {
root: path.resolve(__dirname),
extensions: ['', '.js']
},
entry: [
'babel-polyfill',
'./index.js',
],
output: {
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015']
}
}
]
}
};
Run Code Online (Sandbox Code Playgroud)
示例js代码
import 'babel-polyfill';
import mysql from 'mysql';
class Test {
constructor () {
}
get read () {
}
};
Run Code Online (Sandbox Code Playgroud) 这些天大多数人都在使用es6.一个警告是模板字符串.
我喜欢将我的行字符数限制为80.因此,如果我需要连接一个长字符串,它可以正常工作,因为连接可以是多行,如下所示:
const insert = 'dog';
const str = 'a really long ' + insert + ' can be a great asset for ' +
insert + ' when it is a ' + dog;
Run Code Online (Sandbox Code Playgroud)
但是,使用模板文字尝试这样做只会给你一个多行字符串,其中$ {insert}将狗放在结果字符串中.当您想要将模板文字用于诸如URL汇编等内容时,这并不理想.
我还没有找到一个很好的方法来维护我的行字符限制,仍然使用长模板文字.有人有想法吗?
被标记为被接受的另一个问题只是部分答案.下面是我忘记包含的模板文字的另一个问题.
使用换行符的问题在于,如果不在最终字符串中插入空格,则不允许缩进.即
const insert = 'dog';
const str = `a really long ${insert} can be a great asset for\
${insert} when it is a ${insert}`;
Run Code Online (Sandbox Code Playgroud)
结果字符串如下所示:
a really long dog can be a great asset for dog when it is a dog …
Run Code Online (Sandbox Code Playgroud) 我在javascript中解析一个二进制文件,每个字节存储两条信息,每个半字节一个.这些值当然是0-16和0-16.
在文件格式的所有其他部分中,每个字节代表一条信息,因此我一直使用以下方法成功获取所需的数字值:
var num = str.charCodeAt(0) & 0xFF;
Run Code Online (Sandbox Code Playgroud)
但是我一直试图弄清楚如何获得第一个半字节的0-16值,并且从我的单字节字符"str"获得第二个半字节的值.
感谢任何帮助.
如何在iOS上的Safari中启用调试视图?我只需要查看我正在测试页面的Xoom是否会生成javascript错误.我试图找到如何在Android浏览器中启用开发工具,就像我为iOS做的那样,但似乎找不到它.
这可能是我在使用JavaScript和任何版本的Internet Explorer多年中遇到的最不起眼的错误.我们将YUI 2.7用于某些(非)便利方法.叹了口气,我会为jQuery做些什么....
这会影响Internet Explorer 6和Internet Explorer7.Internet Explorer 8行为正常.所有其他浏览器也表现正常.
问题:当我将焦点设置在特定元素上时,我收到以下错误:
Can't move focus to the control because it is invisible, not enabled, or of a type that does not accept focus.
Run Code Online (Sandbox Code Playgroud)
所以我有一个名为'add-comment-login-overlay'的div,它包含input元素.此div显示:none,直到用户单击名为"login"的多个链接之一.
以下是我正在使用的JavaScript代码,它选择'login'链接,它移动DOM中'add-comment-login-overlay'的位置,设置display:block,然后将焦点设置在第一个输入字段在叠加层中.这是设置焦点的过程导致我上面写的错误.
//Get Login links in comment forms.
links = YAHOO.util.Dom.getElementsByClassName('addCommentLoginLink');
//Set click event for login links.
YAHOO.util.Event.addListener(links, "click", function(el){
//Stop link.
YAHOO.util.Event.preventDefault(el);
//Move login overlay in DOM.
if( el.srcElement ){
var target = el.srcElement;
}else{
var target = el.currentTarget;
}
YAHOO.util.Dom.insertAfter( overlay, target.parentNode.parentNode.parentNode.parentNode );
//Set to visible.
YAHOO.util.Dom.setStyle( …
Run Code Online (Sandbox Code Playgroud) 我一直在查看REST API的示例,如Netflix http://developer.netflix.com/docs/REST_API_Reference#0_59705和Twitter,他们似乎在statusText标头响应中放置错误消息而不是responseText.我们正在开发一个内部RESTful api,我正在争论发送自定义statusText消息并忽略responseText.
对于我们的应用程序的范围,当用户尝试做他们不应该做的事情时,我们返回错误400,并且将在用户界面中为用户更新的唯一错误消息将以400传递.我是相信消息应该作为一个修改过的statusText发送,但是其中一位工程师(他比我对REST知之甚少)正在争论在responseText中发送它.
什么是最好的方式?