일치하는 문자열을 문서에 쿼리하고 얻은 문자열에서 URL을 만드는 코드를 만들었습니다. 일치하는 태그 요소를 살펴보고 URL 문자열을 만든 다음 지정된 parentNode
객체에 링크를 추가합니다. 이 코드는 일반 자바 스크립트에서는 잘 작동하지만 Greasemonkey에 붙이면 깨집니다. 나는 이유를 알 수 없다.Greasemonkey 스크립트에서 innerText가 정의되지 않았습니다.
은 여기가 크롬 콘솔에 충실 할 때 완벽하게 작동 버전 :
/*
Exception: Tags[i].innerText is undefined
@Scratchpad:18
*/
:
//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)
내가 그리스 몽키에 스틱, 그것은 나에게 그리스 몽키 "편집"화면에서이 오류를 제공합니다
"placeHolder"는 정의되지 않았지만 지금은 복제 할 수 없습니다. 변수의 범위와 관련이 있다는 느낌이 들었습니다. "var 태그;"를 추가했습니다. 및 "var placeHolder;" 스크립트 상단으로 이동하면 도움이되지 않습니다.
당신이 맞습니다. 고마워요! –