使用时将十进制数转换为10以上的基数.toString(base)
,似乎我总是得到一个小写字符串.我可以依靠吗?大写字符串是正确的,但需要转换为我的应用程序.
引用定义此规范的部分(我看起来也找不到它)以及任何反例(返回大写的浏览器)的额外功劳.
例:
(12648430).toString(16) // returns: "c0ffee". Not "C0FFEE"
Run Code Online (Sandbox Code Playgroud) 我需要在函数foo()触发时触发函数bar().我无法控制函数foo或将来是否会改变.我经常有这种情况(我讨厌它).
我写了这个函数来将我的代码添加到函数foo的末尾:
function appendToFunction(fn,code){
if(typeof fn == 'function'){
var fnCode = fn.toString() ;
fnCode = fnCode.replace(/\}$/,code+"\n}") ;
window.eval(fnCode); // Global scope
return true ;
}
else{
return false ;
}
}
Run Code Online (Sandbox Code Playgroud)
例如:
appendToFunction(foo,"bar();");
Run Code Online (Sandbox Code Playgroud)
这对我来说是一个可怕的想法 - 但它确实有效.有人可以指出我更好(更安全)的方向.
编辑:foo
不是一个特定的功能,但我最终处理的许多功能.它们不会在页面中动态更改.但它们可能会不时地改变(例如,形式验证要求).
解决方案:我选择了Adam的答案的修改版本.它并不完美,但它比我的更好:
var oldFoo = foo ;
foo = function(){
var result = oldFoo.apply(this, arguments);
bar();
return result ;
}
Run Code Online (Sandbox Code Playgroud)
NB.注意IE6/7中没有.apply()
方法的一些本机函数.
我有很长的字符串,如果出现,需要删除一个模式.但它出现在字符串中是一个非常罕见的边缘情况.
如果我这样做:
str = str.replace("pattern", "");
Run Code Online (Sandbox Code Playgroud)
然后看起来我正在创建一个新字符串(因为Java字符串是不可变的),如果原始字符串很好,这将是一种浪费.我应该首先检查匹配,然后只有在找到匹配时才更换?
在事件监听器中使用this
或更好/更快event.target
我一直在编写这样的代码(例子是jQuery):
jQuery('input').bind('keyup', function (e) {
var j = jQuery(e.target);
foo(j.attr('id') , j.val() );
});
Run Code Online (Sandbox Code Playgroud)
我被告知要更换e.target
,this
因为它"更好".这个或那个真的有什么优势吗?
我使用target是因为它适用于委派事件,因此它是一种更通用的解决方案.我在基准测试时遇到了麻烦,因为我的测试结果很混乱(尽管很明显,在这种情况下,差异太小而无关紧要)
如今,当您调用函数时.toString()
,浏览器会返回函数的原始声明.
但我记得Firefox过去常常返回优化版本,例如.
function fn() {
return 2+3;
}
fn.toString() // Used to give: function fn() {return 5;}
Run Code Online (Sandbox Code Playgroud)
在哪些浏览器上使用此功能是安全的?
IE10有一项功能,只需点击一下按钮即可显示密码字段的内容.有没有办法检测到这种情况发生了?
当然,我可以回过头来寻找点击我期望按钮的位置,但这并不理想.
在使用OR
(管道)的正则表达式中,有一种方便的方法来获取匹配的表达式部分.
例:
/horse|caMel|TORTOISe/i.exec("Camel");
Run Code Online (Sandbox Code Playgroud)
回报Camel
.我想要的是caMel
.
我知道我可以遍历选项而不是使用一个大的正则表达式; 这会更有意义.但我很想知道它是否可以这样做.
我假设在cors请求中默认阻止自定义标头是为了防止某种攻击.
这个假设是否正确?如果是这样,那攻击是什么?
来自https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS
在CORS中,发送带有OPTIONS方法的预检请求,以便服务器可以响应是否可以使用这些参数发送请求.Access-Control-Request-Method标头作为预检请求的一部分通知服务器,当发送实际请求时,它将使用POST请求方法发送.
在网页中,javascript和as3的设置如下:
ExternalInterface.call("javascriptFunctionName", "");
javascriptFunctionName()
使用由ExternalInterface.addCallback设置的actionscript函数目前,javascriptFunctionName()
首先检查它是否可以访问actionscript的回调函数.
这项检查是否必要?或者actionscript设法调用javascript函数的事实是否表明授予了访问权限?
编辑:更具体地说,我的代码有效.我担心它可能会放在具有不同权限的第三方页面中.
javascript ×8
regex ×2
tostring ×2
actionscript ×1
cors ×1
eval ×1
firefox ×1
java ×1
jquery ×1
optimization ×1
passwords ×1
performance ×1
replace ×1
security ×1
string ×1