我曾经使用过跳房子来通过我的网站进行导览。现在,您必须制作一个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;
}

09-20 17:22