Избегая использования эвала в Рафаэле.функция блокнота для эскизов


У меня есть следующий код, который работает как ожидалось:

                var svg_height = $("#svg-container").height();
                var svg_width = $("#svg-container").width();
                var name = "sketchpad";

    eval("window." + name + "= Raphael.sketchpad('"
                                + "svg-container" + "',{" + " width:"
                                + svg_width + "," + "height: " +           svg_height
                                + "," + "editing: true," + " });");

Однако я хочу избежать использования eval по соображениям безопасности. Я попробовал следующее, Но это не работает

window.sketchpad = Raphael.sketchpad("'svg-container',{width:"+ svg_width +",height:"+ svg_height +", editing: true}");

Можно ли это решить с помощью JSON. Если да, то как? Любая помощь будет оценена по достоинству.

2 2

2 ответа:

Отказ от ответственности: я ничего не знаю о Рафаэле, но просто перевожу ваш код eval.

window[name] = Raphael.sketchpad("svg-container", {
                                        width: svg_width,
                                        height: svg_height,
                                        editing: true
                 });

Функция, которая у вас была, почти там, просто имеет пару ошибочных кавычек, которые ее портят.

Это тоже должно сработать.

window.sketchpad = Raphael.sketchpad("svg-container", {
                                        width: svg_width,
                                        height: svg_height,
                                        editing: true
                 });

Здесь нет необходимости использовать переменную name.