2010-07-23 21 views
5

मैं जावास्क्रिप्ट और Greasemonkey के साथ नोब हूँ और मैं एक साधारण लिपि लिखना चाहता हूँ।Greasemonkey और वैश्विक चर

मुझे पता है कि Greasemonkey एक अज्ञात फ़ंक्शन के साथ आपके कोड को लपेटता है ताकि वर्तमान पृष्ठ छोड़ने के बाद आपके चर मौजूद नहीं होंगे। हालांकि, मुझे एक वैश्विक चर की आवश्यकता है। मैं unsafeWindow का उपयोग करने की कोशिश की और खिड़की कुछ इस तरह की वस्तुओं:

if (window.myVar == undefined) { 
    window.myVar = "myVar"; 
} 

अगर मैं पेज को ताज़ा हालत के मूल्य हमेशा सच है।

क्या Greasemonkey के साथ वैश्विक चर का उपयोग करने का कोई तरीका है?

उत्तर

4

आप वैश्विक चर का उपयोग कर रहे हैं, लेकिन वैश्विक चर केवल तभी तक चलते हैं जब पेज रीफ्रेश करते हैं तो आप सभी वैश्विक चर साफ़ कर रहे हैं। पेज रीफ्रेश से पहले डेटा को सहेजने का एकमात्र तरीका एक कुकी के साथ है, सर्वर पर अपलोड करें, या एचटीएमएल 5 स्टोरेज एपीआई है। Greasemonkey के साथ शायद आप एक कुकी का उपयोग करना चाहते हैं।

15

पृष्ठ के जावास्क्रिप्ट स्कोप पर उपलब्ध वैश्विक चर बनाने के लिए आपको unsafeWindow का उपयोग करना होगा।

if (unsafeWindow.myVar == undefined) { 
    unsafeWindow.myVar = "myVar"; 
} 

लेकिन जब आप पृष्ठ को रीफ्रेश करते हैं तो आप इस चर के अस्तित्व की अपेक्षा नहीं कर सकते हैं, क्योंकि सामान्य जावास्क्रिप्ट इस तरह से काम नहीं करता है। यदि आप पृष्ठ लोड भर में कुछ डेटा को बचाने के लिए चाहते हैं तो मेरा सुझाव है कि आप GM_setValue & GM_getValue

+0

क्या कई पृष्ठों (जैसे जीएम_सेट वैल्यू और जीएम_getवैल्यू) में तारों, बूलियन और संख्याओं के अलावा चर को बचाने का कोई तरीका है? मैंने Greasemonkey के लिए एक स्क्रिप्ट देखी जो यह एक बार कर सकता था, लेकिन मुझे याद नहीं है कि यह कौन सा था। –

+1

ऑब्जेक्ट को JSON पर डी-सीरियलाइज़ करें, फिर जब आप चर लोड करते हैं तो इसे क्रमबद्ध करें। –

-5

का उपयोग आप एक से अधिक पृष्ठ रीफ्रेश के माध्यम से एक चर को बनाए रखने की कोशिश कर रहे हैं, तो आप एक कुकी में संग्रहीत करने की आवश्यकता होगी।

हालांकि अगर आप बस एक ही पृष्ठ के दायरे के भीतर एक वैश्विक चर हैं:

var imGlobal; 
(function(){ // Greasemonkey crap... 
... 
imGlobal = "Totally"; 
})(); 
alert(imGlobal) // Alerts "Totally" 
1

GreaseMonkey में वैश्विक चर सेट करने के @grant none का उपयोग करें, अन्यथा यह unsafeWindow का उपयोग करता है, जो केवल GreaseMonkey लिए उपलब्ध है। कुछ सुरक्षा चिंताओं हैं। http://wiki.greasespot.net/@grant

संबंधित मुद्दे