使用Twitter Bootstrap实现Modernizr是否可以?
我目前正在使用带有Google的html5shiv的Bootstrap,我想知道我是否可以使用Modernizr,或者只是为了让老版IE浏览器激活HTML5元素而过度杀戮?
提前致谢
我试着写一些javascript函数并意识到这一点
function testFunction(input_1, input_2, input_3) {
alert("alert");
}
Run Code Online (Sandbox Code Playgroud)
但是,当我调用这样的函数时:
<input type="button" value="click" onclick="testFunction("1", "2")">
Run Code Online (Sandbox Code Playgroud)
为什么即使只有两个参数它仍然可以工作?
我刚刚运行了一个非常简单的JavaScript 性能测试(不要问为什么).测试声明了一个变量,但没有为其赋值:
var x;
然后,它比较值变量比较的速度null
,以及undefined
,换句话说:
var y = (x == null);
和var y = (x == undefined);
.
我期待与之比较undefined
是禁食.事实上,它远远不够.与之相比,null
速度最快,速度提高了约80%.
我上面描述的结果来自于在Chrome中运行测试(版本13).在Firefox中运行它们会产生更接近我预期的结果(与之undefined
比较的速度比使用它更快null
,尽管非常小).
所以,我的问题是这可能是什么原因?为什么Chrome似乎更喜欢这种比较null
?
为了快速参考,这里是结果的屏幕截图:
在Karma测试中,有很多全局变量和函数,JSHint抱怨它(它被集成到我的编辑器中).
如何告诉JSHint忽略这个特定文件中的所有未定义变量?我希望/* jshint undef: false */
能够关闭这些警告,但事实并非如此.
在ECMAScript的5规范规定如下:
通常,词汇环境与ECMAScript代码的某些特定语法结构相关联,例如TryStatement的FunctionDeclaration,WithStatement或Catch子句,并且每次评估此类代码时都会创建新的词法环境.
如果我的理解是正确的,那么当在JavaScript中创建新的词法环境时,会输入一个新的范围,这就是为什么在函数内声明的变量在该函数之外是不可见的:
function example() {
var x = 10;
console.log(x); //10
}
console.log(x); //ReferenceError
Run Code Online (Sandbox Code Playgroud)
因此,在上面的函数声明中,创建了一个新的词法环境,这意味着x
在任何可能存在的外部词汇环境中都不可用.
因此,上面关于函数声明的引用部分似乎有意义.但是,它还声明为Try语句的Catch子句创建了一个新的词法环境:
try {
console.log(y); //ReferenceError so we enter catch
}
catch(e) {
var x = 10;
console.log(x); //10
}
console.log(x); //10 - but why is x in scope?
Run Code Online (Sandbox Code Playgroud)
那么catch
块的范围如何工作?我是否对词汇环境有什么根本的误解?
我正在进行我的第一个Bootstrap项目并且有点卡住了.在页面顶部,我想要左侧的徽标和右侧的2个按钮叠加在一起.这是我到目前为止:
<div class="container-fluid">
<div class="row-fluid">
<div class="span4">
<img src="/img/logo.png" width="120" />
</div>
<div class="span8">
<a class="btn btn-large" href="#" style="width:100%;"><i class="icon-map-marker"></i> Find Location</a><br />
<a class="btn btn-large" href="#" style="width:100%;"><i class="icon-comment"></i> Call Now</a>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
它在桌面上按预期工作,但我在iPhone上,span8列断开并显示在下一行.有没有办法改写这个?
我知道,为了处理输入字段中的键盘事件,您可以使用:
$('input').keyup(function(e){
var code = e.keyCode // and 13 is the keyCode for Enter
});
Run Code Online (Sandbox Code Playgroud)
但是,现在,我有一些div
和li
元素,我没有form
元素,我的元素都没有被认为是表单元素,也没有一个接受焦点或标签和类似的东西.
但是现在我需要处理div元素中的keyup
(或者keydown
,或者keypress
无关紧要)事件.我试过了:
$('div#modal').keyup(function(e){
if (e.keyCode == 13)
{
$('#next').click(); // Mimicking mouse click to go to the next level.
}
});
Run Code Online (Sandbox Code Playgroud)
但问题是,它不起作用.我该怎么办?
在以下示例中:
Line1 <br /> Line2
Run Code Online (Sandbox Code Playgroud)
我正在使用<br />
强制Line2进入下一行,但据我所知,没有跨浏览器友好的方式来设置br的高度.我可以用什么替代方法?
我正在使用JavaScript的Date
对象,并且我第一次需要提取日期的年份部分.我所看到的是一种奇怪的行为.它返回113而不是2013年,我无法弄清楚这两个数字是如何相关的,除了最后两个数字可能是相同的.
var date = new Date();
console.log(date.getYear()); // prints 113
console.log(date.getFullYear()); // prints 2013
Run Code Online (Sandbox Code Playgroud)
这些功能有何不同?为什么有功能getFullYear
?对我来说,获得一年的一部分是没有意义的.
我在链接点击上成功使用了bootstrap popover.我在popover中有一些表单元素:textfield,checkbox和button.我能够使用jquery.live()附加一个按钮监听器,但在该按钮监听器中,我似乎没有任何正确的表单元素的访问权限.如果我在控制台日志中跟踪它们,它们就存在,但它们的值始终保持原始默认值,所以如果我去$('#txtComment').val(); 无论我放入字段中,字符串总是相同的.
是否有任何示例,教程或源代码我可以看一下在引导程序弹出窗口中使用任何类型的交互性的东西?
这就是我设置popover的方式:
this.commentLink.popover({
trigger: 'manual',
placement: 'right',
html : true,
content: function () {
return $('#commentPopout').html();
}
}).popover('hide');
//jquery.on won't work here so we use live
$('#btnSubmitComment').live('click', this.proxy(this.commentSubmitClick));
Run Code Online (Sandbox Code Playgroud)
然后我这样做是为了成功展示它:
this.commentLink.popover('show');
Run Code Online (Sandbox Code Playgroud)
这是按钮点击功能:
commentSubmitClick: function(e){
console.log($('#txtComment').val());//always shows default text regardless of what I've actually typed in the field
}
Run Code Online (Sandbox Code Playgroud)