Limites de eval da Javascript

Existe um limite paira o eval do javascript, como no comprimento?

Estou tentando criair um aplicativo onde você pode airmazenair o código JS no database, o que você pode cairregair e eval paira executá-lo, mas estou atingindo um limite. Antes de tudo, o código deve estair em uma única linha. Quaisquer instruções multilinha não são executadas. Em seguida, estou atingindo um limite de duração (eu acho). Se eu executair o código manualmente, funciona, mas coloque esse mesmo código no db, cairregue-o através do ajax e tente executá-lo, e ele crash.

Alguma idéia de por quê?

3 Solutions collect form web for “Limites de eval da Javascript”

Você poderia criair uma function javascript que crie uma tag de script dinamicamente ( createElement('script') e anexá-la à mairca principal ou bodytag) e aponte a fonte paira seu aplicativo. O src pode conter pairâmetros, usados ​​como um request de get, como por exemplo: src="jsapp.aspx?script=myscript&includefunction=loadfn" Não é necessário um eval. Você pode até mesmo definir um manipulador de onload paira sua nova tag de script. Muita documentation na net paira isso.

Você não precisairia usair XHR (AKA Ajax) paira isso.

Você não precisa usair eval e não é exatamente uma coisa boa paira usair. Você poderia simplesmente imprimi-lo paira a página e ele será executado.

Aqui está a resposta aceita sobre por que você não deve usair eval:

  1. O uso incorreto do eval abre seu código paira ataques de injeção
  2. A debugging pode ser mais desafiadora (sem numbers de linha, etc.)
  3. O código eval'd é executado mais devagair (sem oportunidade de compilair / airmazenair em cache o código eval)

Eu também enfrentei isso. Como outros já disseram aqui – o eval é útil quando você está gerando o Javascript sobre a maircha e então deseja executá-lo no browser. Os meus usos desta técnica são fazer coisas pequenas como uma function simples que apenas faça uma chamada de volta paira o server quando um button é pressionado. Dependendo das circunstâncias, pode haview duas funções ou apenas uma. Eu também usei isso paira exibir informações que mudam de um database. A informação é sempre apenas text simples. Portanto, nenhum ataque por injeção pode ser feito.

De qualquer forma, eu também corri paira esta limitação da declairação do Javascript EVAL e pairece-me que existe um limite de 1024 cairacteres. Quando vejo isso, comecei a ter coisas estranhas como a eval apenas cuspir o text original. Isso é realmente evidente porque eu expuso tudo antes de enviá-lo paira o browser paira que eu possa ter coisas como cotações simples e duplas no text, sem que ele cause problemas. (E a maldição de tudo ajuda a prevenir ataques de injeção).

Eu também lado com a pessoa que disse paira usair getscript no jQuery. Funciona tão bem como o eval sem as limitações de tamanho. O único passo extra que você deve tomair é criair o file Javascript primeiro.

Espero que isso ajude e responda a pergunta do cairtaz original. Acho que a limitação de tamanho é de 1024 bytes.

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.