cordova - lib - हिंदी में पुस्तकालय विज्ञान के लिए यूजीसी नेट हल प्रश्न पत्र




शाफ़्ट Push.js पुस्तकालय के साथ कई जेएस फ़ाइलों को निष्पादित करना (3)

पेज के बीच संक्रमण के लिए push.js का उपयोग करते हुए मैं शाफ़्ट 2.0.2 के साथ एक फोनगैप ऐप विकसित कर रहा हूं I सब कुछ सुचारू रूप से काम कर रहा है, लेकिन कुछ घंटों पहले मैंने इस पर ठोकर खाई:

JavaScript वाले स्क्रिप्ट टैग उन पृष्ठों पर निष्पादित नहीं किए जाएंगे जो push.js. के साथ लोड होते हैं। यदि आप अन्य पृष्ठों पर तत्वों को ईवेंट हैंडलर संलग्न करना चाहते हैं, तो दस्तावेज़-स्तरीय ईवेंट प्रतिनिधिमंडल एक सामान्य समाधान है।

अधिक शोध करने के बाद मुझे यह पता चला: शार्टकेट \ पुश.जेएस के साथ पृष्ठ लोड होने के बाद कस्टम स्क्रिप्ट निष्पादित करें

जो लगभग मेरे पास एक ही समस्या है, हालांकि मुझे आगे बढ़ने की जरूरत है क्योंकि मुझे केवल एक स्क्रिप्ट न केवल लोड करना पड़ता है, लेकिन दो (और भविष्य में शायद अधिक), मैं एक से अधिक लोड करने के लिए चेकपेज () का लाभ कैसे उठा सकता हूं स्क्रिप्ट?

var checkPage = function(){
    //Only run if twitter-widget exists on page
    if(document.getElementById('twitter-widget')) {
        loadTwitterFeed(document,"script","twitter-wjs");
    }
};

window.addEventListener('push', checkPage);

डेनिस के जवाब से अनुकूलित push.js के लिए यहां लोड स्क्रिप्ट लोड करने का मेरा संस्करण है।

मेरे पास एचटीएमएल और जेएस फाइल्स के लिए 1: 1 रिश्ते हैं I वहाँ एक thinga.html और thinga.js फ़ाइल होगा। मैंने क्या करने का फैसला किया है html में सामग्री डिवा के लिए चीज़ का एक आईडी जोड़ने के लिए:

<div class="content" id="thinga">
    ...
</div>

इसके बाद, प्रारंभिक ऐप सेटअप में मैंने पुश वैश्विक घटना के लिए 'चेकपेज' नामक फ़ंक्शन संलग्न की थी:

window.addEventListener('push', checkPage);

चेक पेज फ़ंक्शन सामग्री डिवी से आईडी को पकड़ लेता है और यह देखने के लिए कि क्या एक ही नाम की एक जावास्क्रिप्ट फ़ाइल है, और अगर ऐसा है, तो उसे scripts/ निर्देशिका से jQuery के $ .getScript () का उपयोग करके लोड करें।

var checkPage = function(){

    var elm = document.getElementsByClassName("content")[0];
    var script = elm.id;

    if(script) {
        $.getScript("scripts/"+elm.id+".js")
        .done(function( script, textStatus ) {
           console.log( textStatus );
        })
        .fail(function( jqxhr, statusText, errorThrown ) {
            console.log(errorThrown);
            console.log(statusText);
            console.log(jqxhr);
        });
    }
};

ऐसा लगता है कि कम से कम मेरे प्रयोग-केस के लिए, चाल करना है I बस उस मौके पर इसे बाहर फेंकना चाहता था कि वह किसी और की मदद कर सके।


मुझे इस समस्या का हल मिला है जब मैं push.js. के साथ काम कर रहा हूं। आखिर में जो कुछ खत्म हो गया था, वह प्रत्येक एचटीएमएल पृष्ठ दे रहा है, मैं एक # नुस्खे लोड करना चाहता हूं। इसका मतलब यह है कि जब मैं उन पृष्ठों से लिंक करता हूं जो मैं contactlist.html # संपर्क से लिंक करता हूं

मेरे मुख्य HTML पृष्ठ पर, मैं ईवेंट श्रोता को जोड़ता हूं:

 window.addEventListener('push', pageHandler);

फिर एक अलग फाइल में मैं इस स्क्रिप्ट को चलाता हूं।

var pageHandler= function(){
  var page= window.location.hash;

  if (page == '#contact'){
     //Put every script you want to use on this page here. 
  }
  if(page == '#info'){
    //Same here, every script you need for this page. 
  }
};

पता नहीं कि यह सबसे अच्छा तरीका है, लेकिन मुझे लगता है कि मेरे पास मेरी लिपि पर अच्छा नियंत्रण है, और यह काम करता है।


अद्यतनः यह सवाल भी देखें

यहाँ एक समाधान है जिसे मैंने करने की कोशिश की है और इसे सही तरीके से काम करने लगता है, लेकिन मैं इस पर कुछ फीडबैक की तलाश कर रहा हूं कि यह सबसे अच्छा तरीका है या नहीं ... कृपया टिप्पणी करने में संकोच न करें, और मैं अपडेट की आवश्यकता के अनुसार कर दूंगा। मुझे पता है कि eval() खतरनाक है, लेकिन मुझे यकीन नहीं है कि इस मामले में यह कितना खतरनाक है।

अपने सूचकांक \ पहले पृष्ठ पर, अपने पृष्ठ के नीचे, निम्न सामग्री को .content div के बाहर .content , ताकि इसे push.js द्वारा ओवरराइट न किया push.js

<script>
    window.addEventListener('push', function(){
        var scriptsList = document.querySelectorAll('script.js-custom');
        for(var i = 0; i < scriptsList.length; ++i) {
            eval(scriptsList[i].innerHTML);
        }
    });
</script>

फिर, किसी अन्य पृष्ठ पर जो push.js माध्यम से लोड हो जाता है, बस स्क्रिप्ट को .js-custom का एक वर्ग दें। इस स्क्रिप्ट को अंदर रखा जाना चाहिए .content div

<div class="content">
    ...
    <script class="js-custom">
         alert('I was executed!');
    </script>
</div>

मुट्ठी की स्क्रिप्ट किसी भी <script> टैग के माध्यम से .js-custom वर्ग से .js-custom और इसे eval() का उपयोग कर सामग्री को निष्पादित करेगा।