jjzjj

javascript eval() 因 window.external.notify() 而失败,适用于 window.alert()

在WP8上,如果我执行(1):Microsoft.Phone.WebBrowserwb;wb.InvokeScript("eval","window.external.notify('abc');");它抛出“调用目标返回错误”,未知错误,hresult80020101。但是(2)wb.InvokeScript("eval","window.alert('abc');");工作正常,并显示消息框。和(3)wb.InvokeScript("eval","(function(){window.external.notify('abc');})();");也可以正常工作。我的问题是,阻止ev

JavaScript - 对条件使用 eval() - 是否正确?

我有JSON数据,我正在使用filter搜索:myJsonData.filter(function(entry){return(entry.type==='model'||entry.type==='photographer');});现在我没有在返回后指定这些条件,而是创建了一个类似的字符串(因为我想要一个预先创建的搜索条件列表),然后使用eval()所以:myJsonData.filter(function(){returneval(stringToSearch);});这似乎有效。但是,我只想确认一下,这是正确的用法吗?这样做有什么风险/问题吗?我想灵活地进行任何类型的搜索,例如

javascript - 与使用 eval 相比,包含 <script> 标签是否有性能提升?

我看到很多关于如何像这样动态添加代码的建议(source):varmyScript=document.createElement("script");myScript.setAttribute("type","text/javascript");myScript.innerHTML+='alert("Hello");';document.body.appendChild(myScript);相对于eval像这样eval('alert("Hello");');人们提示eval的性能下降和安全问题,但我无法想象如何添加标签会更快或更安全。编辑人们想知道为什么我要评估像alert("Hell

javascript - IE9 javascript eval() 的问题

有什么理由吗eval("(function(x){returnx*x;})")不使用IE9返回函数? 最佳答案 这是JScript解析器中的一个错误。它不应该在IE9中发生,除非您处于兼容或怪癖模式。IE8将您的函数表达式误解为函数声明,导致它无法返回任何内容。之前在thisquestion中提到过.您可以使用其他典型方法之一解决它,以消除JScript解析器对什么构成表达式与语句的混淆,例如:eval('[function(x){returnx*x;}][0]')eval('0?0:function(x){returnx*x;}'

javascript - 为什么人们说 javascript eval() 是邪恶的,但您却没有反对 setTimeout 和 setInterval 等?

如果我没记错的话,eval会执行给定字符串中的有效代码eval("alert('hey')");和setTimeout("alert('hey')",1000);做同样的事情,只是用了一个计时器。settimeout和eval一样有风险吗? 最佳答案 我想说你听到了同样的反对意见。setTimeout(带有字符串而不是函数参数)与eval几乎相同。如果可能的话,setTimeout(function(){alert("hey");},1000); 关于javascript-为什么人们说j

javascript - 如何解压 JavaScript 文件的内容?

你知道那些打包后的js文件是什么样子的吧?eval(function(p,a,c,k,e,d){...}('obfuscated-string'.split('|'),0,{}))碰巧我必须调整一些看起来像那样的大型遗留代码,我想找到一种方法将其变成更具可读性的版本。如果那不可能,我至少可以去掉eval吗? 最佳答案 JSBeautifier将重新格式化和解压:http://jsbeautifier.org/ 关于javascript-如何解压JavaScript文件的内容?,我们在St

javascript - 当网页和 ajax 调用来自同一台服务器时,JSON.parse() 真的比 eval() 更安全吗?

我知道JSON.parse()可以防止攻击者将javascript注入(inject)到响应中,因为JSON解析器只是一个文本解析器,而不是脚本解析器,所以请不要关闭这是所有其他问题的重复谈谈那个。这是一个不同的问题。如果攻击者可以劫持您的Ajax调用并将javascript放入Ajax调用中,他们是否也有可能劫持您的实际网页并将任意javascript放入您的页面,从而完成完全相同的攻击?当然,使用JSON.parse()而不是eval()不会有任何损失(除非您的环境中还没有JSON解析器并且必须添加更多代码才能获得),但是在什么情况下如果您的网页由与您的ajax调用相同的主机提供服

javascript - 在不使用 eval 的情况下通过字符串名称访问命名空间的 javascript 对象

我遇到了需要从服务器访问javascript对象的情况。服务器返回函数或对象的字符串名称,我将根据其他元数据对对象进行不同的评估。最初我正在评估(eval([string]))并且一切正常。最近我正在更新函数以不使用eval以确保安全安心,但我遇到了命名空间对象/函数的问题。具体来说,我尝试用window[name]替换eval([name])以通过全局对象的方括号语法访问对象vs评估。但是我遇到了命名空间对象的问题,例如:varstrObjName='namespace.serviceArea.function';//ifIdovarobj=eval(strObjName);//wo

javascript - JavaScript 中 eval 的替代方案是什么?

我有一些看起来像这样的代码:functionStrippedExample(i1,i2,i3,i4,i5,i6,i7,i8){this.i=[];for(vari=1,j=0;i0){this.i[j++]=k;}}}FireBug分析器声称第二长的函数是eval(),占用了将近6%的运行时间。EveryonesaysevalisEVIL(糟糕)和缓慢(正如我发现的那样),但我真的不能做任何其他事情-服务器只是将数据从数据库中拉出并推送到浏览器。我有什么选择?我可以在服务器上做同样的事情,但这只会将负担转移到更高的链条上。我无法更改数据库布局,因为所有内容都与这8个变量Hook并且是一

javascript - (function eval () {}) 如果函数体处于严格模式会抛出语法错误?

为什么这段代码会抛出错误?//globalnon-strictcode(functioneval(){'usestrict';});现场演示:http://jsfiddle.net/SE3eX/1/所以,我们这里有一个命名函数表达式。我想明确指出这个函数表达式出现在非严格代码中。如您所见,它的函数体是严格的代码。严格模式规则在这里:http://ecma-international.org/ecma-262/5.1/#sec-C相关项目符号是这个(它是列表中的最后一个):ItisaSyntaxErrortousewithinstrictmodecodetheidentifierseva