我曾经使用过跳房子来通过我的网站进行导览。现在,您必须制作一个JS对象,该对象将成为调用startTour()函数的参数,该函数将启动Tour。
在此示例中,通过单击a.hopscotch-start链接开始游览。
HTML:
<a href="#" class="hopscotch-start" data-name="x">Start tour</a>
JS:
var x = {id: "tour1", steps: [{title: "the title",....}]};
$("a.hopscotch-start").click(function (e) {
e.preventDefault();
hopscotch.startTour(eval($(this).data('name'))); // -> startTour(x);
return false;
}
这到底有多糟?我知道eval是“缓慢的”,但是它使我可以灵活地拥有一个通用的单击代码,而不必再为它烦恼了。实际的安全风险是什么(如果有)?这样做会大大减慢代码的速度(考虑到代码只是读取要解析为变量的字符串这一事实)。
感谢您的反馈-除了eval以外,其他任何解决方案也都可以实现。
最佳答案
为什么不制造物体并通过钥匙来获得它呢?这样会更快更安全:
var tours = {
x: {id: "tour1", steps: [{title: "the title",....}]},
y: {id: "tour2", steps: [{title: "the title",....}]}
}
$("a.hopscotch-start").click(function (e) {
e.preventDefault();
hopscotch.startTour(tours[$(this).data('name')]); // -> startTour(x);
return false;
}