同僚が今日私に尋ねました:「文字列のjavascriptコードを解析する方法は?」
「eval()」
「私たちのプロジェクトはevalを無効にします...」
「CaoMengdeの名前」
javascriptコードの文字列を解析する必要性は一般的ではないため、この要件について初めて頭に浮かぶ方法はeval()です
が、ネットワークセキュリティのさまざまな理由から、多くのプロジェクトではこの方法を避けています。
したがって、evalが無効になっている場合、文字列のjavascriptコードを解析する
方法は?スクリプトタグを挿入するというトリッキーな方法です。
function fun(a) {
console.log(a);
};
// eval('fun("some data")')
var new_element = document.createElement('script');
new_element.innerHTML = 'fun("some data")';
document.body.appendChild(new_element);
document.body.removeChild(new_element);
デモでスクリプト要素を作成し、要素で解析するjavascriptコードを記述し、要素をドキュメントに挿入し、解析後に要素を削除します
ここで解析されるJavaScriptコードは関数呼び出しであるため、挿入が完了し、実行が完了します。このメソッドを合理的に使用すると、値の転送の効果も得られます。
終わり