我正在尝试使用 hopscotch.js 创建一个交互式游览。JavaScript 库需要 tour 才能工作的标准数据结构如下:
// Define the tour!
var tour = {
id: "hello-hopscotch",
steps: [
{
title: "My Header",
content: "This is the header of my page.",
target: "header",
placement: "right"
},
{
title: "My content",
content: "Here is where I put my content.",
target: document.querySelector("#content p"),
placement: "bottom"
}
]
};
将游览步骤直接放入 JavaScript 库效果很好,但理想情况下,我希望能够将所有这些细节保存在数据库中,并使用 AJAX 将数据传递给 hopscotch.js。(这样可以动态创建游览,并且content
可以在不发布代码的情况下进行更改)。
除了我target
使用document.querySelector()
元素选择器时,一切都运行良好。
我的每个游览步骤的基本 C# 模型如下:
public class MockTourSteps
{
public string Title { get; set; }
public string Content { get; set; }
public string Target { get; set; }
public string Placement { get; set; }
}
作为Target
一个字符串,我必须用双引号传递值。
这样做的问题是,当它被序列化为 JSON 时,使用 Chrome 开发者工具查看页面时会出现以下错误:
Syntax error, unrecognized expression: document.querySelector(".btn-primary")
浏览已经返回到页面的 JSON 数据,我可以看到我周围的双引号document.querySelector()
导致了问题。
target
当我指定target
via时,我需要从我的中删除这些双引号,document.querySelector()
但是当我target
基于 HTML 标记(例如header
.
有什么想法可以实现这一目标吗?