gpt4 book ai didi

javascript - 在 QuerySelector 中只使用单引号

转载 作者:行者123 更新时间:2023-11-29 10:57:16 24 4
gpt4 key购买 nike

我正在使用一个使用 querySelectors 来抓取 DOM 的 Chrome 扩展。在控制台中输入时,以下 querySelector 会正确返回我想要的值(全名中的姓氏):

document.querySelector('[data-bind="text: 
PersonName.fullName"]').textContent.slice(document.querySelector('[data-
bind="text: PersonName.fullName"]').textContent.indexOf(" ")+1)

但是,在扩展中,这些 querySelectors 通过 API 在 JSON 对象中提供,双引号会导致 JSON 解析错误。是否有仅使用单引号编写上述查询选择器的等效方法?或者以某种方式转义双引号,以便 JSON 解析它时不会出现问题?

如果您想测试一个潜在的答案,这是我试图抓取的 HTML 元素:

<span data-bind="text: PersonName.fullName">John Smith</span>

为清楚起见 - 我无法控制 HTML 页面,它在最终用户的机器上。

这是生成的 JSON:

{"AtsMapping":[{"ID":"4"},{"atsCode":"ULT1"},{"atsName":"UltiPro"}, 
{"atsMapName":"UltiPro"},{"atsMapNotes":"John Smith (1)"},
{"firstName":"document.querySelector('[data-bind="text:
PersonName.fullName"]').textContent.slice(0,document.querySelector('[data-
bind="text: PersonName.fullName"]').textContent.indexOf(" "))"},
{"lastName":"document.querySelector('[data-bind="text:
PersonName.fullName"]').textContent.slice(document.querySelector('[data-
bind="text: PersonName.fullName"]').textContent.indexOf(" ")+1)"},
{"emailAddress":"document.querySelector(".email-address").innerText;"},
{"jobTitle":"document.querySelector('[data-bind="text:
OpportunityTitle"]').textContent"},{"location":""},{"locationDefault":""},
{"effectiveDate":""},{"effectiveDateDefault":""},{"expirationDate":""},
{"expirationDateDefault":""},{"flsaStatus":""},{"flsaStatusDefault":""},
{"compGroup":""},{"compGroupDefault":""},{"benefitsGroup":""},
{"benefitsGroupDefault":""},{"offerTemplate":""},{"offerTemplateDefault":""},
{"confidentialFlag":""},{"confidentialFlagDefault":""}]}

解析这个JSON的错误是:

Uncaught SyntaxError: Unexpected token t in JSON at position 184 at JSON.parse () at Object.$.get [as success] (inject.js:10390) at fire (inject.js:3274) at Object.fireWith [as resolveWith] (inject.js:3404) at done (inject.js:9311) at XMLHttpRequest. (inject.js:9554)

谢谢!

最佳答案

您应该对字符串进行转义。

请看下面我是如何将您的代码转换为字符串并将其添加到 json 中的。

当我使用 /"/" 时确保 se

var d= {"firstName": ""}

var value = "document.querySelector('[data-bind=\"text: PersonName.fullName\"]').textContent.slice(document.querySelector('[data- bind=\"text: PersonName.fullName\"]').textContent.indexOf(' ')+1)";

d.firstName = value;
console.log(d)

关于javascript - 在 QuerySelector 中只使用单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54634972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com