请将官方ECMAScript规范视为您的答案来源,而不是特定浏览器供应商发布的文档.(我知道Mozilla使用"函数语句"扩展其JavaScript实现.)
那么,根据ECMAScript规范,ergo,其中定义的句法产品,这是有效的吗?
if (foo) {
function x() { return; }
}
Run Code Online (Sandbox Code Playgroud)
更新:我的问题也可以这样说: Statement生产是否包含 FunctionDeclaration生产?
结论:答案是否定的.
我有以下场景:
随后将嵌套页面加载到主页面的iframe中.两个页面在页面加载时从公共JS文件调用函数.
现场演示:
http ://www.ecmazing.com/misc/pause-execution/mainpage.html
http://www.ecmazing.com/misc/pause-execution/nestedpage.html
http://www.ecmazing.com /misc/pause-execution/common.js
常见的JS文件包含一个全局函数,它将H1元素绘制为红色.我想在该函数的开头暂停执行,以便在H1元素仍为黑色时暂停执行.
这是微不足道的.只需加载页面,打开浏览器的开发工具,选择common.js文件,并在函数的第一行设置断点.现在,重新加载页面.断点将持续重新加载,执行将暂停.
现在,在Chrome和Firefox(Firebug)中,上面设置的断点(对于主页面)也适用于嵌套页面.两个页面都使用相同的JS文件,并且在该文件中设置断点将自动应用于这两个页面.不幸的是,这条规则不适用于IE.
更糟糕的是,即使我随后设置了断点,然后仅重新加载iframe,断点也不会持续存在.
所以,我不知道如何在IE中暂停执行嵌套页面.可以吗?(我通过debugger;在函数开头手动设置a来处理这个问题,但我希望能够通过IE中的开发工具设置断点,如果可能的话.)
我有这个非常简单的演示:
function foo() {
alert('Works!');
}
var inp = document.createElement('input');
inp.onblur = foo;
document.body.appendChild(inp);
Run Code Online (Sandbox Code Playgroud)
见这里: http ://jsfiddle.net/A7aPA/
如你所见,这是有效的.(单击输入,然后单击其他位置,将弹出警报.)
但是,如果我将此行添加到JavaScript代码中:
document.body.innerHTML += '<br>';
Run Code Online (Sandbox Code Playgroud)
然后模糊处理程序停止工作(并没有抛出错误顺便说一句).
见这里: http ://jsfiddle.net/A7aPA/1/
这是为什么?
所以假设我们有4个Div(3个隐藏,1个可见),用户可以通过javascript/jQuery在它们之间切换.
我想计算在每个Div上花费的时间,并将包含该时间的xhr发送到服务器以将其存储在数据库中.当用户切换div视图时,将发送此xhr.
我怎样才能做到这一点?任何提示将不胜感激.
谢谢,
给出一个字符串
'1.2.3.4.5'
Run Code Online (Sandbox Code Playgroud)
我想得到这个输出
'1.2345'
Run Code Online (Sandbox Code Playgroud)
(如果字符串中没有点,则应该保持字符串不变.)
我写了这个
function process( input ) {
var index = input.indexOf( '.' );
if ( index > -1 ) {
input = input.substr( 0, index + 1 ) +
input.slice( index ).replace( /\./g, '' );
}
return input;
}
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/EDTNK/1/
它有效,但我希望有一个更优雅的解决方案......
更新:赏金是使用"标记"库的解决方案.
这个Markdown代码:
*foo*
Run Code Online (Sandbox Code Playgroud)
将生成此HTML代码:
<p><em>foo</em></p>
Run Code Online (Sandbox Code Playgroud)
现场演示: https ://jsbin.com/luganot/edit?js,console
但是,我已经将生成的HTML代码注入到内联上下文中,如下所示:
<p> text [inject generated HTML here] text </p>
Run Code Online (Sandbox Code Playgroud)
所以我不希望<p>元素包围生成的HTML代码.我只想将*分隔符转换为<em>元素,依此类推.
有没有办法告诉Markdown转换器不生成<p>包装器?目前,我正在.slice(3,-4)使用生成的HTML字符串,它确实删除了<p>和</p>标签,但这显然不是我想长期保留的解决方案.
我有一个jsFiddle得到一个例子来工作.
$().ready(function() {
$('.test').each(function() {
$this = $(this);
$this.data('Worker', function() {
$('#stop').html((parseInt($('#stop').html()) + 1))
})
setInterval($this.data('Worker'), 100);
});
$('#stop').click(function() {
// I want the worker function to stop being triggered here
$('.test').remove();
});
});
Run Code Online (Sandbox Code Playgroud)
我想要做的是将一个worker函数附加到DOM中的元素,以便在删除元素时,worker函数停止.
这样的事情可能吗?
HTML:
<div id="test">This is a test</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var elem = document.getElementById('test');
elem.style.setProperty('color', 'green', 'important');
elem.style.color = 'red';
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/4fn6h/3/
Chrome,Safari和IE9中的文本为绿色,但Firefox和Opera中的文本为红色.(另外,IE7和IE8中的文本是黑色的,因为代码会抛出错误,但让我们忽略它...)
那么,哪些浏览器遵循此标准?是否可以覆盖setProperty(...,'important')或不覆盖?
我编写了一个我想用作Grunt任务的函数.我可以通过将其添加到Gruntfile来完成此操作:
grunt.registerTask('foo', function () {
// code here
});
Run Code Online (Sandbox Code Playgroud)
但是,将功能代码保存在单独的文件中更有意义.我计划定义一堆这些自定义任务,我不想膨胀Gruntfile.
我不确定注册这些任务的首选方式是什么.我发现这个工作:
grunt.registerTask('foo', function () {
require('./path/to/foo.js')(grunt);
});
Run Code Online (Sandbox Code Playgroud)
所以,我在第一个例子中有内联函数,但这一次,我正在加载一个外部文件并立即调用它.在那个外部文件中,我当然要写:
module.exports = function (grunt) {
// code here
}
Run Code Online (Sandbox Code Playgroud)
这有效,但感觉很乱.有没有更合适的方法呢?
我正在使用此页面 - http://ecmazing.com/cors.html - 对此资源发出跨域Ajax请求:http://hacheck.tel.fer.hr/xml.pl
它适用于Chrome,Safari和Firefox,但不适用于IE9和Opera.
代码:
var pdata = {'textarea': 'test'};
$.post('http://hacheck.tel.fer.hr/xml.pl', pdata, function(data, status, xhr) {
output.value = xhr.responseText;
});
Run Code Online (Sandbox Code Playgroud)
(预期结果是XML代码字符串.)
亲眼看看: http ://ecmazing.com/cors.html
在IE9和Opera中,errorXHR对象的处理程序执行并传入此错误对象:
{
readyState: 4,
status: 0,
statusText: 'error'
}
Run Code Online (Sandbox Code Playgroud)
如您所见,此错误对象未显示太多信息.
如何让它在IE9和Opera中运行?