मेरी बुकमार्कलेट में 'लॉन्चर' स्क्रिप्ट को कॉल किया गया है जो body
में डाला गया है। जैसे ही यह चलता है, यह उसी तरह से अधिक स्क्रिप्ट (jQuery, वास्तविक अनुप्रयोग), और एक सीएसएस में प्रवेश करता है।केवल एक बार चलाने के लिए बुकमार्कलेट को कैसे लागू करें?
बुकमार्कलेट
javascript:(function(){
var l = document.createElement('script');
l.setAttribute('type','text/javascript');
l.setAttribute('src','launcher.js');
document.body.appendChild(l);
})();
Launcher.js
var s = document.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src','my actual script');
document.body.appendChild(s);
// I repeat a block like this once per script/css.
समस्या यह है कि अगर बुकमार्कलेट दो बार क्लिक किया जाता है, सभी स्क्रिप्ट फिर से सम्मिलित किया जाएगा है। मैं इस व्यवहार को कैसे रोक सकता हूं?
ओह - जीते सिंटैक्स को ठीक करने के लिए संपादित किया गया है और इसके आसपास बकवास के बजाय एनन func के बाद से ब्लॉक को स्थानांतरित करें। –
परफेक्ट - मेरे पिछले प्रयास निश्चित रूप से इन पंक्तियों के साथ थे, लेकिन मैं विंडो प्रोप के बजाय चर का उपयोग कर रहा था, जिसे मैं पूरी तरह से नहीं जानता था। धन्यवाद! – vemv
@vemv एक चर के अंदर एक 'varVar = 1234;' के रूप में घोषित एक चर के रूप में इसके विपरीत 'var' कीवर्ड के बिना वास्तव में वैश्विक' विंडो 'ऑब्जेक्ट की संपत्ति बन जाती है, लेकिन यह विधि अधिक स्पष्ट और जानबूझकर है। –