Я создал код для запроса документа для соответствия строк и создания URL-адреса из полученных строк. Он просматривает элементы тега, ищущие совпадения, создает строку URL, затем добавляет ссылку на назначенный объект parentNode
. Этот код отлично работает на простом javascript, но он ломается, когда я вставляю его в Greasemonkey. Я не могу понять, почему.innerText не указан в сценарии Greasemonkey
Вот полностью рабочий вариант, когда я вставить его в хромированной консоли:
//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, это дает мне эту ошибку с «Edit» экрана Greasemonkey:
/*
Exception: Tags[i].innerText is undefined
@Scratchpad:18
*/
Он также сказал мне, что «placeHolder» не определено, но я неспособен повторить это прямо сейчас. У меня такое чувство, что оно имеет какое-то отношение к тому, как изменяются переменные. Я добавил «var Tags»; и «var placeHolder»; на вершине скрипта, и это не помогло.
Вы прямо на. Большое спасибо! –