javascript - atscript - स्क्रिप्टिंग भाषा




कैसे गतिशील रूप से एक जावास्क्रिप्ट समारोह इंजेक्षन? (2)

मैं काम पर एक भयानक यूआई के साथ एक उत्पाद का इस्तेमाल करके और क्रोम में यूज़रनेजर के जरिए इसे स्वादिष्ट बनाने की कोशिश कर रहा हूं। इसके लिए, मैं जावास्क्रिप्ट फ़ंक्शन को पृष्ठ में यूजरविनॉग मैकेनिज्म के माध्यम से इंजेक्ट करने की कोशिश कर रहा हूं:

// find the div
var dropDown = document.getElementById("tstGlobalNavigation_ddlChooseProject");

// inject function
dropDown.innerHTML = dropDown.innerHTML + "<script>function gotoIncident(){alert('111')}</script>";        

// inject a button
dropDown.innerHTML = dropDown.innerHTML + "&nbsp;&nbsp;&nbsp;<input type='button' name='btnSearch' value='Go' onClick='javascript:gotoIncident()' >";

जैसा कि आप देख सकते हैं कि मैं एक बटन और एक फ़ंक्शन ( gotoIncident ) इंजेक्शन कर रहा हूं, जिस पर उपयोगकर्ता को बटन पर क्लिक किया जाना चाहिए।

बटन स्क्रीन पर दिखाई देता है लेकिन जब मैं इसे क्लिक करता हूं, तो जावास्क्रिप्ट डिबगर मुझसे कहता है कि gotoIncident परिभाषित नहीं है।

मैं क्या खो रहा हूँ?


आपको वैश्विक स्कोप में कार्य को परिभाषित करने की आवश्यकता है (इसका उपयोग <head> अनुभाग में करें) ताकि आप इसका उपयोग कर सकें।


संदर्भ के लिए मैंने इसे निम्नलिखित तरीके से हल किया:

myDiv.innerHTML = myDiv.innerHTML + " <input type='text' id='txtSearch' name='txtSearch' style='position:absolute;top:8px;left:800px;width:50px' >";
myDiv.innerHTML = myDiv.innerHTML + " <input type='button' name='btnSearch' value='Go' onclick='fn()' style='position:absolute;top:8px;left:860px;width:35px'>";

addScript("function fn() {var obj = document.getElementById('txtSearch'); "
  + "if (obj != null) { "
  + "  var incidentId = document.getElementById('txtSearch').value; "
  + "  var currentURL = location.href; "
  + "  var splitResult = currentURL.split('/'); "
  + "  var projectId = splitResult[4]; "
  + "  location.href = 'http://site/SpiraTeam/' + projectId + '/Incident/' + incidentId + '.aspx'; "
  + " } }"
  , "fn");

}






userscripts