शॉर्टकट में “वेबपृष्ठ पर JavaScript रन करें” क्रिया का परिचय
तकरीबन सभी वेबपृष्ठ की स्क्रिप्ट JavaScript का उपयोग करके तैयार होती है, जो एक ऐसी प्रोग्रामिंग भाषा है जो वेब ब्राउज़र के अंदर ऐनिमेशन, इंटरऐक्टिव मेनू, वीडियो प्लेबैक आदि समेत डाइनैमिक प्रभाव पैदा करती है। आमतौर पर, JavaScript आप द्वारा वेबसाइट सर्फ़ करने के दौरान आपको दिखाई नहीं देती है। हालांकि, “वेबपृष्ठ पर JavaScript रन करें” क्रिया वाले शॉर्टकट को बनाने से और फिर Safari ऐप से शॉर्टकट रन करने से, आप किसी वेबपृष्ठ की JavaScript नियंत्रित कर सकते हैं।
वेबपृष्ठ पर आपकी कस्टम JavaScript रन करने वाले शॉर्टकट के अनगिनत उपयोग हैं। उदाहरण के लिए, आप ऐसे शॉर्टकट बना सकते हैं जो किसी वेबपृष्ठ से ख़ास डेटा निकाल सकते हैं और फिर किसी टास्क में यह डेटा डाल सकते हैं, जैसे कि कक्षा शेड्यूल निकालना और फिर इसे कैलेंडर ऐप में जोड़ना, या किसी Facebook समूह का सदस्य डेटा एक्सपोर्ट करना और फिर वो डेटा स्प्रेडशीट में जोड़ना।
आप ऐसे शॉर्टकट भी बना सकते हैं जो वेबपृष्ठ संशोधित करें, जैसे कि वेबपृष्ठ टेक्स्ट का फ़ॉन्ट बदलना या वीडियो प्लेबैक की गति बदलना।
वेबपृष्ठ पर JavaScript रन करने वाले शॉर्टकट उपयोग की जानकारी के लिए, शॉर्टकट में “वेबपृष्ठ पर JavaScript रन करें” क्रिया उपयोग करें देखें।
वेबपृष्ठ डेटा निकालने के बारे में
“वेबपृष्ठ पर JavaScript रन करें” क्रिया द्वारा आप निश्चित मानदंड का पालन करने वाले सभी एलिमेंट को जुटाकर किसी वेबपृष्ठ से डेटा निकाल सकते हैं, फिर उस डेटा के साथ टास्क पूरी करने के लिए (या एलिमेंट के फिर निरीक्षण के लिए) उन एलिमेंट को दोहराएँ।
उदाहरण के लिए, वेबपृष्ठ पर हरेक इमेज एलिमेंट की सूची बनाने के लिए, इसे उपयोग करें :
var elements = document.querySelectorAll("img");
दूसरे उदाहरण में, कक्षा “पोस्ट” के साथ हरेक एलिमेंट को निकालने के लिए, इसे उपयोग करें :
var elements = document.querySelectorAll(".post");
एक बार NodeList बन जाने पर, आप (फिर एलिमेंट फ़िल्टर करने या किसी डेटा स्ट्रक्चर में एलिमेंट जोड़ने के लिए) एलिमेंट दोहरा सकते हैं, निम्न जैसों का उपयोग करके :
var elements = ...;
for (let element of elements) {
// ...
}
वेबपृष्ठ परिणामों की पूछताछ की अधिक जानकारी के लिए https://developer.mozilla.org/Selectors और https://developer.mozilla.org/SelectorAll देखें।
“वेबपृष्ठ पर JavaScript रन करें” क्रिया इनपुट
“वेबपृष्ठ पर JavaScript रन करें” क्रिया का इनपुट एक सक्रिय Safari वेबपृष्ठ होना चाहिए, जिसका मतलब है आप द्वारा शेयर शीट में शॉर्टकट ऐक्शन एक्सटेंशन से (ख़ासतौर से Safari, SFSafariViewController, या ASWebAuthenticationSession से) शॉर्टकट रन होना चाहिए।
जब कोई शॉर्टकट शेयर शीट से रन होता है, तो इनपुट Safari ऐप से आपके शॉर्टकट की पहली क्रिया में पास हो जाता है।
भले ही “वेबपृष्ठ पर JavaScript रन करें” क्रिया में इनपुट एक Safari वेबपृष्ठ होना चाहिए, पर आप मैजिक वेरिएबल का उपयोग करके क्रिया में अतिरिक्त डेटा डाल सकते हैं। उदाहरण के लिए, निम्नलिखित शॉर्टकट में “वेबपृष्ठ पर JavaScript रन करें” क्रिया शामिल है जो किसी वेबपृष्ठ पर किसी वीडियो को संशोधित करती है। वीडियो की प्लेबैक दर गति वेरिएबल द्वारा नियंत्रित होती है।
नुस्ख़ा : गैलरी में वीडियो गति बदलें शॉर्टकट उपलब्ध है।
अगर “वेबपृष्ठ पर JavaScript चलाएँ” क्रिया आपके शॉर्टकट में पहली क्रिया नहीं है, तो आप द्वारा शॉर्टकट रन करने पर एक त्रुटि संदेश दिखाई देगा।
इसे ठीक करने के लिए, आप “वेरिएबल पाएँ” क्रिया जोड़ सकते हैं और इसके मानदंड Safari वेबपृष्ठ पर सेट कर सकते हैं ताकि “वेबपृष्ठ पर JavaScript रन करें” क्रिया में इसका कॉन्टेंट पास किया जा सके।
Safari से शॉर्टकट रन करने के बारे में जानकारी के लिए, दूसरे ऐप से शॉर्टकट सेट अप करें और चलाएं देखें।
“वेबपृष्ठ पर JavaScript रन करें” क्रिया आउटपुट
डेटा वापस करने के लिए, आपको JavaScript जैसे कि completion(result)
में कंप्लिशन हैंडलर को कॉल करना होगा। चूंकि JavaScript आमतौर पर ऐसिंक्रोनस पैटर्न के साथ उपयोग होती है, इसलिए कॉल जानबूझकर सिंक्रोनस नहीं होती है। इस तरह, आप क्रिया को ऐसिंक्रोनस रूप से पूरा कर सकते हैं। उदाहरण के लिए, निम्नलिखित वैध है :
window.setTimeout(function() {
completion(true);
}, 1000);
“वेबपृष्ठ पर JavaScript रन करें” क्रिया का आउटपुट कोई भी वैध JSON डेटा प्रकार होता है, जिसमें निम्न शामिल हैं :
स्ट्रिंग
संख्या
बूलियन (सत्य या असत्य)
सारणी (कोई भी अन्य वैध JSON प्रकार शामिल है)
शब्दकोश (कोई भी अन्य वैध JSON प्रकार शामिल है)
शून्य
अनिर्धारित
JSON के बारे में अधिक जानकारी के लिए, Shortcuts में JSON के उपयोग के बारे में देखें।
दृश्यों के पीछे, शॉर्टकट JavaScript और शॉर्टकट ऐप के बीच संचार करने के लिए आपके वापसी मान को ऑटोमैटिकली एंकोड और डीकोड करते हैं। इसका मतलब आपको कंप्लिशन हैंडलर को कॉल करने से पहले JSON.stringify(result)
को कॉल करने की ज़रूरत नहीं है।
चूंकि वापसी मान JSON है, इसलिए कुछ वापसी मान सही ढंग से काम नहीं करेंगे। उदाहरण के लिए, फ़ंक्शन या नोड के पास उपयोगी JSON-एंकोडेड प्रस्तुति नहीं होगी। इस स्थिति में, यह अनुशंसित किया जाता है कि आप ऐसी सारणी/शब्दकोश बनाएँ जिसमें आपके आवश्यक JSON-संगत मान शामिल हों।
नोड की अधिक जानकारी के लिए https://developer.mozilla.org/Node देखें; फ़ंक्शन की अधिक जानकारी के लिए https://developer.mozilla.org/Functions देखें।
नोट : चूंकि JavaScript में एक ऑब्जेक्ट बस एक शब्दकोश है, इसलिए बेसिक ऑब्जेक्ट JSON में सही ढंग से बदलते हैं।
नुस्ख़ा : यदि आप “वेबपृष्ठ पर JavaScript चलाएँ” क्रिया से कोई भी डेटा वापस नहीं करना चाहते, तो आप completion()
को फ़ंक्शन (क्योंकि अपरिभाषित
वैध आउटपुट है) में बिना किसी वितर्क के कॉल कर सकते हैं। यह completion(अपरिभाषित)
को कॉल करने के समान है।
“वेबपृष्ठ पर JavaScript चलाएँ” क्रिया समय सीमा
Safari में सभी JavaScript एक्सटेंशन की तरह, “वेबपृष्ठ पर JavaScript चलाएँ” क्रिया समय सीमा का विषय है और इसे जितना जल्दी हो सके पूरा कर देना चाहिए। सिंक्रोनस फ़ंक्शन का उपयोग करने वाली JavaScript हो सकता है समय पर पूरी न हो, निम्न सहित :
window.alert()
window.prompt()
window.confirm()
कई सेकेंड तक चलने वाली समय समाप्तियाँ—उदाहरण के लिए :
window.setTimeout(function() { completion(); }, 5000);
यदि आपकी JavaScript समयसीमा पार करती है, तो शॉर्टकट पूरा होने में विफल हो जाएगा और आप द्वारा शॉर्टकट चलाने पर “JavaScript समय समाप्ति” त्रुटि संदेश दिखेगा।
सिंटैक्स और रनटाइम त्रुटि हैंडलिंग
आप ऐसा कोई भी सिंटैक्स उपयोग कर सकते हैं जो “वेबपृष्ठ पर JavaScript रन करें” क्रिया में JavaScript लिखने के लिए Safari पर समर्थित हो। iOS 12 ECMA 6 JavaScript सिंटैक्स का समर्थन करता है, साथ ही for of
लूप और let
भी।
शॉर्टकट ऐप में, “वेबपृष्ठ पर JavaScript चलाएँ” क्रिया बेसिक सिंटैक्स जाँच करके आपको Safari एक्सटेंशन से शॉर्टकट चलाने से पहले त्रुटियाँ देखने में मदद करती है।
जैसे ही आप टेक्स्ट फ़ील्ड में अपनी स्क्रिप्ट दर्ज करते हैं, सिंटैक्स हाईलाइटिंग यह सुनिश्चित करने में मदद करती है कि आपकी JavaScript वैध है। उदाहरण के लिए, यदि आप स्ट्रिंग के अंत में कोटेशन चिह्न लगाना भूल जाते हैं, तो उस स्ट्रिंग के बाद का सारा टेक्स्ट हाईलाइट हो जाता है।
यदि आपकी स्क्रिप्ट का सिंटैक्स वैध है पर इसमें रनटाइम त्रुटि शामिल है, तो “वेबपृष्ठ पर JavaScript रन करें” क्रिया अपवादों को पकड़ती और प्रदर्शित करती है। उदाहरण के लिए, यदि आपकी स्क्रिप्ट ऐसे वेरिएबल या फ़ंक्शन का संदर्भ लेती है जो मौजूद नहीं है (जैसे कि shortcuts.completion()
), तो रनटाइम पर एक त्रुटि प्रदर्शित होती है।
गोपनीयता और सुरक्षा
जब आप किसी शॉर्टकट को वेबपृष्ठ पर Javascript चलाने की अनुमति देते हैं, तो वह शॉर्टकट उस वेबपृष्ठ के संभावित संवेदी डेटा सहित सारी जानकारी ऐक्सेस कर सकता है। शॉर्टकट ऐप कुछ तरीक़ों का इस्तेमाल करता है ताकि यह सुनिश्चित हो कि आप अपने JavaScript शॉर्टकट सुरक्षित और गोपनीय रूप से रन कर सकें।
जब आप “वेबपृष्ठ पर JavaScript रन करें” क्रिया वाले शॉर्टकट को रन करते हैं, तो एक संकेत आपको यह सूचित करते हुए प्रदर्शित होता है कि शॉर्टकट वेबपृष्ठ से इंटरऐक्ट करने वाला है। इसका मतलब है कि शॉर्टकट वेबपृष्ठ से संभावित संवेदी डेटा ऐक्सेस कर सकता है, जैसे कि पासवर्ड, फ़ोन नंबर या क्रेडिट कार्ड जानकारी।
आप द्वारा “अनुमति दें” पर टैप करने से, शॉर्टकट निर्दिष्ट वेबपृष्ठ पर चलता है। यदि आप एक ही शॉर्टकट एक ही वेबपृष्ठ पर फिर चलते हैं, तो शॉर्टकट दोबारा संकते नहीं दिखाता है। यह अनुमति प्रति शॉर्टकट, प्रति वेबपृष्ठ के आधार पर क़ायम रहती है।
आप द्वारा किसी शॉर्टकट को किसी वेबपृष्ठ के ऐक्सेस की अनुमति देने पर शॉर्टकट समय-समय पर अपडेट की गई मालवेयर डेफ़िनिशन को डाउनलोड करके आपको संभावित मैलिसियस स्क्रिपट से फिर सुरक्षित करने के लिए एक अतिरिक्त चरण लेता है। वेबपृष्ठ से इंटरऐक्ट करने से पहले, शॉर्टकट JavaScript का विश्लेषण करता है, फिर मालवेयर डेफ़िनिशन से सलाह लेता है। इस मूल्यांकन के आधार पर, शॉर्टकट को स्क्रिपट की अनुमति देने के लिए, स्क्रिप्ट को अस्वीकार करने के लिए या शॉर्टकट को रन करने की अनुमति देने से पहले एक अतिरिक्त संकेत प्रदर्शित करने के लिए निर्देशित किया जाता है।
नोट : यह मूल्यांकन आपके डिवाइस पर किया जाता है—आपकी (“वेबपृष्ठ पर JavaScript चलाएँ” क्रिया के टेक्स्ट फ़ील्ड में) JavaScript के कॉन्टेंट विश्लेषण के लिए बाहरी सर्वर को नहीं भेजे जाते हैं।
यदि शॉर्टकट को रन करने से रोका जाता है, तो एक स्पष्टीकरण त्रुटि संदेश प्रदर्शित होता है।
महत्वपूर्ण : आपको वह शॉर्टकट कभी नहीं चलाना चाहिए जिसमें ऐसी JavaScript हो जिस पर आपको विश्वास न हो।