我编写了代码来查询文档以查找匹配的字符串,并从获得的字符串中创建一个 URL。它通过标签元素查找匹配项,生成 URL 字符串,然后将链接附加到指定parentNode
对象。这段代码在普通的 javascript 中运行良好,但是当我把它放在 Greasemonkey 中时它会中断。我不知道为什么。
当我将它粘贴在 chrome 控制台中时,这是一个完整的工作版本:
//loop through elements by classname and find string matches
regexQueryEmail = "(AccountEmailAddress\\s)(.+?)(\\n)"
regexQueryContact = "(Contact with ID: )(.+?)(\\D)"
var Tags = document.getElementsByClassName('msg-body-div')
for (i = 0; i < Tags.length; i++) {
matchEmail = Tags[i].innerText.match(regexQueryEmail)
matchContact = Tags[i].innerText.match(regexQueryContact)
if (matchEmail != null) {
var emailString = matchEmail[2]
var placeHolder = Tags[i]
}
if (matchContact != null) {
var idString = matchContact[2]
}
}
var urlFirst = "https://cscentral.foo.com/gp/stores/www.foo.com/gp/communications/manager/main/191- 4559276-8054240?ie=UTF8&customerEmailAddress="
var urlSecond = "%3E&initialCommId="
var cscURL = urlFirst + emailString + urlSecond + idString
var cscLink = document.createElement('a')
cscLink.innerText = 'Communication History'
cscLink.href = cscURL
placeHolder.parentNode.appendChild(cscLink)
当我将它粘贴在 Greasemonkey 中时,它在 Greasemonkey“编辑”屏幕上给了我这个错误:
/*
Exception: Tags[i].innerText is undefined
@Scratchpad:18
*/
它还告诉我“placeHolder”未定义,但我现在无法复制它。我有一种感觉,它与变量的作用域有关。我添加了“var Tags;” 和“var placeHolder;” 到脚本的顶部,它没有帮助。