如果我有一个<div id='a'>Chrome浏览器,那么在javascript中我可以做(就好像是一个全局变量).a.stuff()a
然而,这不适用于FireFox - 我将需要使用document.getElementById('a').
这里的正确行为是什么?(根据W3规格)
另外我感兴趣的是,如果我有一个id为div a但a在我的脚本中也有一个全局变量,Chrome将如何解决这种歧义.这种行为是随机的还是笨拙的?
如何将一个id由连字符(" - "),冒号(":")和句点(".")组成的元素进行翻译(好吧我知道它们可以被访问document.getElementById但浏览器将如何将其转换为表示它们的全局变量)
我正在玩React Native.我正在尝试构建我的应用程序,但它开始变得混乱进口.
--app/
-- /components
-- Loading.js
-- index.ios.js
Run Code Online (Sandbox Code Playgroud)
现在,index.ios.js我可以简单地做到:
import Loading from './components/Loading';
但是,当我开始创建更多组件时,使用更深的目录结构,它开始变得混乱:
import Loading from '.../../../../components/Loading';
我理解首选的解决方案是为事物制作私有的npm模块,但这对于一个小项目来说太过分了.
您可以global.requireRoot在浏览器上执行类型解决方案,但如何通过导入实现此功能?
我目前正在使用MEAN Stack编写Web应用程序,并尝试在ECMAScript 6 JavaScript中编写代码; 但是,在使用导入和导出语法时,我在Chrome和Firefox中都出现错误.目前是否有任何浏览器完全支持ECMAScript 6?
请注意:我不是在询问浏览器何时支持ECMAScript 6.我问的是哪些浏览器支持ECMAScript 6导入和导出语法.请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla#Features_not_yet_supported_by_Firefox
javascript browser-support ecmascript-6 es6-module-loader es6-modules
我正在编写一个脚本,该脚本使用XMLHttpRequest来搜索由相对路径定义的文件,尝试解析该脚本可识别的其他相同域绝对路径的相对路径,然后尝试从已解析的文件中加载该文件网址.如果我遇到404,我只是尝试将文件相对路径解析为另一个绝对路径,然后再试一次.对于这个特殊的脚本,它完全可以遇到404-然而,我的控制台上到处都是"无法加载资源:服务器响应状态为404(未找到)消息,我想要抑制它们.
据我所知,没有错误可以捕获 - 错误情况由xmlHttpRequest.onreadystatechange处理程序处理,并且没有window.onerror.
有没有办法压制这些消息?
谢谢
javascript google-chrome xmlhttprequest google-chrome-devtools
我正在使用Node.js 的Q模块试图在我有很多步骤的情况下避免"厄运金字塔".例如:
function doTask(task, callback)
{
Q.ncall(task.step1, task)
.then(function(result1){
return Q.ncall(task.step2, task);
})
.then(function(result2){
return Q.ncall(task.step3, task);
})
.fail(callback).end();
}
Run Code Online (Sandbox Code Playgroud)
基本上这似乎工作; 如果任何任务步骤引发错误,它将被传递给回调(尽管我欢迎改进,因为我是node.js promises的新手).但是,当我需要尽早中止任务链时,我遇到了问题.例如,如果result1成功返回,我可能想提前调用回调并中止其余的回调,但我尝试这样做的失败...
function doTask(task, callback)
{
Q.ncall(task.step1, task)
.then(function(result1){
if(result1)
{// the rest of the task chain is unnecessary
console.log('aborting!');
callback(null, result1);
return null;
}
return Q.ncall(task.step2, task);
})
.then(function(result2){
console.log('doing step 3...');
return Q.ncall(task.step3, task);
})
.fail(callback).end();
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我看到两个"中止!" 和"做第3步......"打印.
我相信我只是在这里误解了一些基本原则,所以我将不胜感激.谢谢!
我想使用Promises在AngularJS中实现动态加载静态资源.问题:我在页面上有几个组件可能(或不是,取决于哪些显示,因此是动态的)需要从服务器获取静态资源.加载后,可以在整个应用程序生命周期内进行缓存.
我已经实现了这个机制,但我是Angular和Promises的新手,我想确保这是一个正确的解决方案\方法.
var data = null;
var deferredLoadData = null;
function loadDataPromise() {
if (deferredLoadData !== null)
return deferredLoadData.promise;
deferredLoadData = $q.defer();
$http.get("data.json").then(function (res) {
data = res.data;
return deferredLoadData.resolve();
}, function (res) {
return deferredLoadData.reject();
});
return deferredLoadData.promise;
}
Run Code Online (Sandbox Code Playgroud)
因此,只发出一个请求,并且对loadDataPromise()的所有下一次调用都会获得第一个承诺.它似乎适用于进展中的请求或前一段时间已经完成的请求.
但缓存Promises是一个很好的解决方案吗?
这是我现在已经做了很长时间的方式了:
export default class AttachmentCreator extends Component {
render() {
return <div>
<RaisedButton primary label="Add Attachment" />
</div>
}
}
AttachmentCreator.propTypes = {
id: PropTypes.string,
};
Run Code Online (Sandbox Code Playgroud)
但我看到有人这样做:
export default class AttachmentCreator extends Component {
static propTypes = {
id: PropTypes.string,
};
render() {
return <div>
<RaisedButton primary label="Add Attachment" />
</div>
}
}
Run Code Online (Sandbox Code Playgroud)
事实上,我已经看到人们在构造函数之外设置初始状态.这是好习惯吗?这一直困扰着我,但我记得在某个地方有人说将默认道具设置为静态不是一个好主意的讨论 - 我只是不记得原因.
我刚刚注意到Node.js v0.10.26提供的API文档util.isArray,
util.isArray(object)#如果给定的"object"是一个Array,则返回true.
否则是假的.
var util = require('util');
util.isArray([])
// true
util.isArray(new Array)
// true
util.isArray({})
// false
Run Code Online (Sandbox Code Playgroud)
但是,那个不同的ecmascripts是如何正常的,Array.isArray?
> Array.isArray([]);
true
> Array.isArray(new Array);
true
> Array.isArray({});
false
Run Code Online (Sandbox Code Playgroud) 根据这个讨论,ECMAScript 6中可以定义多行字符串,而不必将字符串的后续行放在行的最开头.
Allen Wirfs-Brock的帖子包含一个代码示例:
var a = dontIndent
`This is a template string.
Even though each line is indented to keep the
code neat and tidy, the white space used to indent
is not in the resulting string`;
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下如何实现这一目标吗?如何定义这个dontIndent东西以删除用于缩进的空格?
我正在尝试将反应连接到我的应用程序中.它是一个使用rails-rails的rails应用程序(虽然我不认为这是问题的一部分).我目前正在使用一个非常简单的1组件设置:
// react_admin.js.jsx
/** @jsx React.DOM */
var CommentBox = React.createClass({
render: function() {
return (
<div className="commentBox">
Hello, world! I am a CommentBox.
</div>
);
}
});
React.render(
<CommentBox />,
document.getElementById('content')
);
Run Code Online (Sandbox Code Playgroud)
我的html文件包含:
<body>
<div id="content"></div>
<script src="/assets/react.js?body=1"></script>
<script src="/assets/react_admin.js?body=1"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
我可以看到rails-react将我的react_admin.js.jsx转换为react_admin.js,如下所示:
/** @jsx React.DOM */
var CommentBox = React.createClass({displayName: 'CommentBox',
render: function() {
return (
React.DOM.div({className: "commentBox"},
"Hello, world! I am a CommentBox."
)
);
}
});
React.render(
CommentBox(null),
document.getElementById('content')
);
Run Code Online (Sandbox Code Playgroud)
然而,chrome在Render.react()调用中引发了''Uncaught TypeError:undefined不是函数',它在"("和"CommentBox(null)"之间显示)
有人能告诉我我做错了什么吗?
javascript ×8
node.js ×3
ecmascript-6 ×2
promise ×2
reactjs ×2
angularjs ×1
arrays ×1
class ×1
dom ×1
es6-modules ×1
html ×1
identifier ×1
import ×1
q ×1
react-jsx ×1
react-rails ×1