इस small userscript को विकसित करते समय मुझे एक समस्या का सामना करना पड़ रहा था। जब मैं अपने स्क्रिप्ट के साथ चल रहा है वेबसाइट के प्रत्येक XMLHttpRequest
ब्लॉक करने के लिए चाहता था, कुछ भी नहीं हो रहा था (कम से कम क्रोम के साथ):विंडो (और असुरक्षित विन्डो) <script> टैग से उपयोगकर्तास्क्रिप्ट से समान क्यों नहीं है?
function main() {
// Override XHR.open with a custom function
window.XMLHttpRequest.prototype.open = function() {
// Nothing... so it's supposed to block every xhr.open() call
}
}
main();
यही बात जब unsafeWindow
द्वारा window
की जगह।
हालांकि, जब मैंने इस छोटी चाल का इस्तेमाल किया, सब कुछ एक आकर्षण की तरह काम किया:
// No more call to main(), and:
var script = document.createElement("script");
script.textContent = "(" + main.toString() + ")();";
document.body.appendChild(script);
xhr.open
के लिए हर कॉल अपने कस्टम समारोह, कोई और अधिक AJAX के द्वारा बदल दिया गया है।
तो मुझे लगता है कि window
तत्व ऐसा नहीं है जब main
को स्क्रिप्ट के अंदर से <script></script>
कंटेनर से कॉल किया जाता है। क्या कोई मुझे समझा सकता है क्यों?
यह एक अप्रत्याशित लंबा, सटीक और जानकारीपूर्ण उत्तर है। मैंने इसके साथ बहुत कुछ सीखा, धन्यवाद! (और मेरे प्रश्न के शीर्षक को संपादित करने के लिए धन्यवाद) –