내 코드에서 무언가를했다면 용서해주세요. 자바 스크립트/jquery를 수행하는 방법을 보여주지 않았고 Google 검색에서 다른 코드를 사용했습니다. 스크립팅 및 vb.net. 그러니 나를 완전한 초심자로 대하십시오.null 값의 속성 'value'을 읽을 수 없다 - Greasemonkey Script
나는 Greasemonkey/Tampermonkey 스크립트를 작성하여 Service-Now의 텍스트를 대체합니다. 기본적으로 사용자 메모 내의 INC 또는 FNAME과 같은 태그를 찾은 다음 해당 데이터로 service-now 필드로 대체합니다. 기본적으로 정보로 템플릿을 자동 완성할 수 있습니다.
내가 스크립트의 문제로 실행하고, 언제 내가이 후로드 확인했다 이전 포스트에서
Uncaught TypeError: Cannot read property 'value' of null
at HTMLInputElement.eval (eval at E_c (:3:114), <anonymous>:46:88)
at HTMLInputElement.dispatch (eval at E_c (:3:114), <anonymous>:7:8436)
at HTMLInputElement.r.handle (eval at E_c (:3:114), <anonymous>:7:5139)
진술 내가 크롬의 콘솔에서 오류를 표시하고 태그를 입력 할 수있는 버튼을 클릭합니다 페이지가 // @ run-at document-idle으로 끝납니다.
이것은 현재 코드입니다. 일부는 작업 영역을 숨기도록 변경되었습니다. 이 코드의
// ==UserScript==
// @name Templates Plus v2
// @namespace https://MYSITE.service-now.com/*
// @include https://MYSITE.service-now.com/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// @run-at document-idle
// @version 1
// @grant GM_addStyle
// ==/UserScript==
(function() {
var add='';
var buttonElems;
switch(i){
case 0:
buttonElems = document.getElementById('label.incident.work_notes');
break;
case 1:
buttonElems = document.getElementById('ni.incident.u_fcr').parentElement;
//var buttonElems = document.getElementById('incident.form_header');
break;
}
add = add + '<input id="tpbutton" type="button" value="Template Plus" class="form_action_button">'; //Template Plus Button
buttonElems.innerHTML = buttonElems.innerHTML + add;
$("#tpbutton").click(function(){
var TemplatePlus_f_AdditionalComments = document.getElementById("incident.comments")[0];
var TemplatePlus_f_WorknotesComments = document.getElementById("incident.work_notes")[0];
var TemplatePlus_f_ShortDescription = document.getElementById("incident.short_description")[0];
var TemplatePlus_f_Resolution = document.getElementById("incident.close_notes")[0];
var TemplatePlus_FirstName=(" ");
var TemplatePlus_LastName=(" ");
var TemplatePlus_MidName=(" ");
var TemplatePlus_UserID=(" ");
var TemplatePlus_UserEmail = document.getElementById("sys_readonly.incident.caller_id.email").value;
var TemplatePlus_Company = document.getElementById("sys_display.incident.company").value;
var TemplatePlus_Location = document.getElementById("sys_display.incident.location").value;
var TemplatePlus_Callback = document.getElementById("incident.u_call_back_number").value;
var TemplatePlus_Name = document.getElementById("sys_display.incident.caller_id").value;
var TemplatePlus_ConfigItem = document.getElementById("sys_display.incident.cmdb_ci").value;
var TemplatePlus_INC = document.getElementById("sys_readonly.incident.number").value;
var TemplatePlus_ATo = document.getElementById("sys_display.incident.assigned_to").value;
TemplatePlus_FirstName.value=TemplatePlus_Name.substr(TemplatePlus_Name.indexOf(',')+1);
TemplatePlus_LastName.value=TemplatePlus_Name.substr(0,TemplatePlus_Name.indexOf(','));
TemplatePlus_MidName.value=TemplatePlus_Name.substr(TemplatePlus_Name.indexOf(' ')+1);
TemplatePlus_UserID.value=TemplatePlus_LastName.substr(0,6)+TemplatePlus_FirstName.substr(0,1)+TemplatePlus_MidName.substr(0,1);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<FNAME>",TemplatePlus_FirstName);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<LNAME>",TemplatePlus_LastName);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<UNAME>",TemplatePlus_UserID);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<COMPANY>",TemplatePlus_Company);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<CALL>",TemplatePlus_Callback);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<INC>",TemplatePlus_INC);
TemplatePlus_f_AdditionalComments.value=TemplatePlus_f_AdditionalComments.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<FNAME>",TemplatePlus_FirstName);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<LNAME>",TemplatePlus_LastName);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<UNAME>",TemplatePlus_UserID);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<COMPANY>",TemplatePlus_Company);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<CALL>",TemplatePlus_Callback);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<INC>",TemplatePlus_INC);
TemplatePlus_f_WorknotesComments.value=TemplatePlus_f_WorknotesComments.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<FNAME>",TemplatePlus_FirstName);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<LNAME>",TemplatePlus_LastName);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<UNAME>",TemplatePlus_UserID);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<COMPANY>",TemplatePlus_Company);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<CALL>",TemplatePlus_Callback);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<INC>",TemplatePlus_INC);
TemplatePlus_f_ShortDescription.value=TemplatePlus_f_ShortDescription.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<SDESC>",TemplatePlus_f_ShortDescription.value);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<FNAME>",TemplatePlus_FirstName);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<LNAME>",TemplatePlus_LastName);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<UNAME>",TemplatePlus_UserID);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<COMPANY>",TemplatePlus_Company);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<EMAIL>",TemplatePlus_UserEmail);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<CALL>",TemplatePlus_Callback);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<INC>",TemplatePlus_INC);
TemplatePlus_f_Resolution.value=TemplatePlus_f_Resolution.value.replaceAll("<CONFIGITEM>",TemplatePlus_ConfigItem);
});
})();
부분은 친구 나 또한 지금 서비스를 사용하는 작업에 사용되는 또 다른 장소에서 쓴 하나 개의 코드를 기반으로, 자신의 스크립트는 자신의 페이지에 잘 작동하지만, 우리에 전혀 실행하지 않을 것입니다.
나는 버튼을 클릭 할 때 호출자/사고 번호 또는 다른 값을 읽는 코드는 버튼을 클릭 할 때까지 실행해서는 안되며 그 시간에 검색하는 모든 값 그 때까지는 모두 이용할 수 있어야합니다.
getElementById는 배열이 아닌 단일 요소를 반환하므로 [0]이 필요하지 않습니다. 다른 것이 있으면 사이트를 보지 않고 말하기가 어렵습니다. 디버거를 둠으로써; 코드를 작성하고 페이지를 다시로드하면 devtools를 호출하여 제대로 디버깅 할 수 있습니다. 변수를 확인하고 코드별로 단계별로 살펴보십시오. Chrome + Tampermonkey에서 작동합니다. – wOxxOm
그 트릭을 했어, 디버깅을 활성화하고 나는 오류가 발생했다 볼 수 있었다, 나는 또한 서비스가 지금 입력 한 필드에 대한 값이 표시되지 않습니다, 그래서 이름이 이름 필드에 채워진 경우에도 그것은 값을 보여줍니다 검사입니다 null –
해당 코드에는 여러 가지 문제가 있으며 스택 오버플로는 코드 검토 또는 코드 작성 서비스가 아닙니다. 그래서,이 질문은 여기에 적합하지 않습니다. 디버깅을 계속하고 MCVE의 문제를 끓여서 질문 할 수 있습니다. 또는 *** 실제 *** 스크립트 (여기에 게시 된 내용이 아님)에서 30 분을 제공 할 수있는 JS 프로그래머를 찾으십시오. 몇 가지 이슈는''getElementById()'의 끝에있는'[0]', 정의되지 않은/부적절한'replaceAll','innerHTML'에 대한 모든 조언, DRY 메소드 대 jQuery 대량로드 및 붙여 넣기 코드입니다. –