Αρχεία ετικετών: jQuery

XSLT και jQuery δείγματα

Έχω κάνει πολλή XSLT και jQuery και σκέφτηκα ότι θα μοιραστώ ορισμένα αποσπάσματα που άλλοι μπορεί να φανούν χρήσιμες στο μέλλον.

Παράδειγμα 1: Εκπέμπουν απλό JavaScript / jQuery σε XSLT:

<XSL:πρότυπο αγώνα = "κάτι" XML:χώρος = «διατηρήσουν»>

  <!– Κενό έξω το ερώτημα φιλικό να φιλτράρει κρυφό πεδίο –>
  <σενάριο τύπο = "text/javascript">
    $(έγγραφο).έτοιμο(συνάρτηση(){
      $("#QueryFriendlyFilters").Val(«κενό»);
    });
  </σενάριο>

</XSL:πρότυπο>

Εκείνο το κομμάτι εκπέμπει τα κάποια JavaScript που περιμένει τη σελίδα για να τελειώσει τη φόρτωση (λόγω της την $(έγγραφο).έτοιμο(…)) και στη συνέχεια σύνολα η τιμή του ένα κρυφό πεδίο που ονομάζεται QueryFriendlyFilters να η τιμή literal "Αδειασμα".

Παράδειγμα 2: Χρήση <XSL:Αν> να ελέγξετε "μεγαλύτερο από",  "λιγότερο από", κλπ.

<XSL:πρότυπο αγώνα = "κάτι" XML:χώρος = «διατηρήσουν»>

  <div id = "fdcAllFilters">
 
    <XSL:Αν test="@Count>0">
      <span class = "fdcFilterLabel">Τρέχοντα φίλτρα:</span>
    </XSL:Αν>

    <!– περισσότερα πράγματα που συμβαίνουν εδώ. –>

</XSL:πρότυπο>

Το παραπάνω απόσπασμα ελέγχει αν ένα χαρακτηριστικό που ονομάζεται "Μετράνε" του στοιχείου "κάτι" είναι μεγαλύτερη του μηδενός.  Το XML πίσω από αυτό θα ήταν κάτι σαν:”

<κάτι Count = "5" />

Παράδειγμα 3: Επαναλαμβάνεται σε όλα τα στοιχεία, Interspersing jQuery κλήσεις.

<!– Επαναλαμβάνεται σε όλα τα φίλτρα και να εμφανίζει τη σωστή  συνδέσεις. –>
<XSL:για κάθε επιλογή = "UserFilter">

  <μια κατηγορία = "FilterHref" href = "javascript:mySubmitPage(«RemoveUserFilter»,'{@ID}’)">[X]</ένα>

  <span class = "fdcFilterLabel"><XSL:αξία του select="@FilterValue"/></span>

  <σενάριο τύπο = "text/javascript">

    $(έγγραφο).έτοιμο(συνάρτηση(){
        <XSL:κείμενο><![CDATA[$("#QueryFriendlyFilters").Val( ($("#QueryFriendlyFilters").Val() + " ]]></XSL:κείμενο>\"<XSL:αξία του select="@FilterValue"/>\"<XSL:κείμενο><![CDATA["));]]></XSL:κείμενο>
    });

  </σενάριο>

</XSL:για-κάθε>

Το παραπάνω απόσπασμα είναι το πιο περίπλοκο και μπορεί να υπάρξει ευκολότερους τρόπους για να το κάνουμε.

Το XML πίσω από αυτό μοιάζει περίπου με αυτό:

<UserFilter ID = "123" FilterValue = "xyzzy" />

Αυτό το απόσπασμα διαδοχικές προσεγγίσεις μέσα σε <UserFilter> κόμβους. 

Πρώτα εκπέμπει μια άγκυρα ετικέτα που όταν πατηθεί εκτελεί μια λειτουργία JavaScript που είναι ήδη στη σελίδα, "mySubmitPage" και μεταβιβάζει την τιμή ενός χαρακτηριστικού το <UserFilter> κόμβος που ονομάζεται "Αναγνωριστικό". 

Στη συνέχεια, εκπέμπει κάποια jQuery που περιμένει την σελίδα να φορτώσει.  JQuery ότι ενημερώνει ένα κρυφό πεδίο που ονομάζεται "QueryFriendlyFilters" προσθέτοντας την τιμή του χαρακτηριστικού FilterValue.  Σημείωση όλα την τρελή <XSL:κείμενο> και <![CDATA[ … ]]> πράγματα.

Αυτό είναι, ελπίδα αυτό βοηθά!

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Lists.asmx, GetListItems και φάκελοι

Έκανα κάποια έρευνα για κάποιον σήμερα γύρω από την υπηρεσία web list.asmx παρέχεται ως μέρος του SharePoint 2010 (και παλιότερες).  Ήταν σε θέση να πάρετε τα στοιχεία λίστας στο φάκελο ρίζας (καθώς και τα ονόματα των υποφακέλων), αλλά δεν ήταν δυνατή η λήψη στοιχείων σε υποφακέλους.  Έκανα κάποια ρίχνοντας μια ματιά για το Ίντερνετ και είναι μια εκπληκτικά κοινή ερώτηση.  Ακόμη, Θα μπορούσα να πάρετε μια καλή απάντηση στο απλό ερώτημα, "αν γνωρίζω το φάκελο, Πώς μπορώ να πάρω τα στοιχεία στο φάκελο?”  Για να είμαι ειλικρινής, Εγώ δεν προσπαθώ τόσο σκληρά, δεδομένου ότι έχω ήθελε να το καταλάβουμε αυτό μία έξω από μόνος μου για μια στιγμή Χαμόγελο.

Να ορίσετε το χρόνο αυτό, Δημιούργησα μια τοποθεσία που ονομάζεται «Blogging σενάρια» και μια προσαρμοσμένη λίστα όνομα "Προσαρμοσμένη λίστα με υπο-φάκελλοι".  Δημιούργησα στη συνέχεια φακέλους με το όνομα:

  • Έτος 2005
  • Έτος 2006
  • Έτος 2007

Πρόσθεσα μερικά στοιχεία στο φάκελο «Έτους 2006».  Αυτό είναι τι μοιάζει:

image

Ο φίλος μου δεν είναι σύνταξη κώδικα C# αλλά μάλλον χρήση της Java, έτσι το φάκελο SOAP ήταν ό, τι είναι πραγματικά αναγκαία.  Για να το επιτύχουμε, Μου έγραψε λίγο jQuery και στη συνέχεια χρησιμοποιείται fiddler για να λάβετε την πραγματική συνομιλία HTTP.

Εδώ είναι το σχετικό jQuery (Αντέγραψα κώδικα κάτω κάτω αν θέλετε για την αντιγραφή/επικόλληση):

image

Τους πρώτο κλειδί είναι να περιλαμβάνουν τόσο έναν <queryOptions> και <QueryOptions> Κόμβος.  Το δεύτερο κλειδί είναι ότι η <Φάκελος> ο κόμβος είναι μια διεύθυνση URL, όπου ο υπολογιστής-πελάτης έχει πρόσβαση.

Μπορεί να υπάρχουν άλλοι τρόποι να ολοκληρώσουμε αυτό το, αλλά αυτή λειτούργησε καλά για μένα όταν χρησιμοποιώντας jQuery.

Εδώ είναι το φάκελο SOAP για τα ανωτέρω:

<soapenv:Φάκελος xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’>                
  <soapenv:Οργανισμός>
    <GetListItems xmlns =’
http://schemas.microsoft.com/SharePoint/SOAP/’>
      <listName>Προσαρμοσμένη λίστα με φακέλους Sub</listName>
      <viewFields>  
        <ViewFields>
          <FieldRef όνομα =' Τίτλος’ />
          <FieldRef όνομα ='EncodedAbsUrl’ />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <Φάκελος>
http://demoserver1/Blogging Σενάρια/κατάλογοι/προσαρμοσμένη λίστα με Sub φακέλων/έτος 2006</Φάκελος>
        </QueryOptions>
      </queryOptions>
   
</GetListItems>
  </soapenv:Οργανισμός>
</soapenv:Φάκελος>

Πολλά παραδείγματα και συζητήσεις γύρω από αυτό με ώθησε να πιστεύουν ότι ήταν όλα τα χρειάζομαι <QueryOptions> και καθορίστε ένα όνομα φακέλου.  Για μένα, Μου χρειάζεται τόσο αναδιπλώνονται μέσα <queryOptions> καθώς και να καθορίσετε ένα έγκυρο URL για το <Φάκελος> Κόμβος.

Εδώ είναι το jQuery AJAX εγκατάστασης:

$(έγγραφο).έτοιμο(συνάρτηση() {
       var soapEnv =
           "<soapenv:Φάκελος xmlns:soapenv =’http://schemas.xmlsoap.org/SOAP/Envelope/’> \
               <soapenv:Οργανισμός> \
                    <GetListItems xmlns =’http://schemas.microsoft.com/SharePoint/SOAP/’> \
                       <listName>Προσαρμοσμένη λίστα με φακέλους Sub</listName> \
                       <viewFields> \
                           <ViewFields> \
                              <FieldRef όνομα =' Τίτλος’ /> \
                              <FieldRef όνομα ='EncodedAbsUrl’ /> \
                          </ViewFields> \
                       </viewFields> \
                       <queryOptions> \
                         <QueryOptions> \
                           <Φάκελος>http://demoserver1/Blogging Σενάρια/κατάλογοι/προσαρμοσμένη λίστα με Sub φακέλων/έτος 2006</Φάκελος> \
                         </QueryOptions> \
                       </queryOptions> \
                   </GetListItems> \
               </soapenv:Οργανισμός> \
           </soapenv:Φάκελος>";

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Ένθεση ατελείωτα <div> Ετικέτες και jQuery

Αυτό φαίνεται σαν τέτοια ένα αιφνίδιο τέλος θέμα, Δεν είμαι σίγουρος ότι αξίζει πραγματικά blogging σχετικά με, αλλά αυτό ποτέ δεν έχει διακοπεί μου πριν από, Επομένως εδώ θα προχωρήσουμε Χαμόγελο

Εργάζομαι σε ένα έργο, όπου εγώ τράβηγμα ορισμένα δεδομένα από μια αναζήτηση, συσκευασίας αυτό σε ένα μήνυμα XML και στη συνέχεια το XML είναι τελικά μετατραπεί σε HTML μέσω XSLT.  Υπάρχει πολλή jQuery συμμετέχουν, ένα bit που υλοποιεί ορισμένα στηλοθέτησης λειτουργικότητα.  Όταν κάνετε κλικ σε μια καρτέλα (Αλήθεια, ένα <div>), jQuery επικαλείται .hide() και .show() στις διάφορες divs (το φορτίο Αρχική σελίδα λήψεις όλο το περιεχόμενο, ώστε να υπάρχουν σε αυτή την περίπτωση δεν καταχωρήσεων προς τα πίσω).

Ένα σωρό ώρες ago, το tab switching λογική άρχισε να συμπεριφερθούν με αστάθεια και δεν θα εμφανίζει μία μου καρτελών.  Τελικά παρακολούθησα αυτό οφείλεται φυσικά στο γεγονός ότι του internet explorer (τουλάχιστον) πίστευαν ότι το <div> ετικέτες που είναι ένθετες πολύ, πολύ βαθύτερα από τα οποία προορίζονται.Θα εμφανίσει τη γραμμή εργαλείων του δημιουργού:

-<div id = "Tab1Content">
  -<div>
    -<div>
      -<div id = "Tab2Content">
        -<div>
           …………………………
                   </div>  <— Τέλος, δείχνει αυτό έκλεισε τελείως εδώ!

Έτσι, Αν έκανα μια $(«#Tab1Content»).απόκρυψη(), Εγώ θα επίσης απόκρυψη Tab2 και εγώ θα μπορούσε ποτέ εμφάνιση Tab2 εάν εγώ δεν δείχνουν επίσης Tab1.  Αντέγραψα και επικόλλησα κώδικα σε visual studio και αυτό έδειξε όλα του div η επένδυση μέχρι ωραία, ακριβώς όπως υποτίθεται ότι κάνει, ψάχνει σαν αυτό:

-<div id = "Tab1Content">
  +<div>
  +<div>
-<div id = "Tab2Content">
  +<div>
  +<div>

Θα χτυπήσει το κεφάλι μου στον τοίχο για λίγο και παρατήρησα ότι στην πραγματική HTML κώδικα παράγει πολλά κενά <div> Ετικέτες, όπως:

<οργανισμός>

  <div id = "Tab1Content">

    <div αναγνωριστικό = «row1» />
    <div αναγνωριστικό = «row2» />

  </div>

  <div id = "Tab2Content">

    <div αναγνωριστικό = «row1» />
    <div αναγνωριστικό = «row2» />

  </div>

</οργανισμός>

(Τα παραπάνω είναι waaaaaaaaaaaay να μετατρέπονται σε κοινότοπα.  Τα κενά tag div tag είναι απολύτως έγκυρες. Ορισμένες μου <div> Ετικέτες ήταν πλήρες του περιεχόμενο, αλλά δεν ήταν πολλά περισσότερα.  Μου ήρθε με την υλοποίηση που μου <XSL:για-κάθε> οδηγίες εκπέμπουν τη συνοπτική div ετικέτες όταν το xsl:δεν for-each' βρει οποιαδήποτε δεδομένα.  Εγώ αναγκάζονται ένα σχόλιο HTML της εξόδου, όπως φαίνεται:

image

 

Αφού το έκανα που, όλα τα του div ευθυγραμμισμένο ωραία και μου καρτέλα εναλλαγής άρχισε να εργάζεται.

Όπως πάντα, Ελπίζω αυτό βοηθά κάποιον σε μια πρέζα.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Ακόμη πιο jQuery–Να αλλάξετε το μέγεθος ένα παράδειγμα εικόνας

Έχω κληρονομήσει ένα τμήμα web από παλιά προμηθευτή του πελάτη και να έχει ένα πρόβλημα μέγεθος εικόνας.  Οι εικόνες πρέπει να είναι 60×50 αλλά για κάποιο περίεργο λόγο, τον αρχικό προμηθευτή τους εξανάγκασε σε 42×42, έτσι φαίνονται στριμωγμένος:

 

Καλή εικόνα

Κακή εικόνα

Εδώ είναι το περιθώριο κέρδους (κάπως απλουστευμένη):

<Πίνακας τάξη = 'επεκταθεί-outlook'>
  <thead>
    <TR>
      <ου  πλάτος = 100′>3 Τρίτη</ου>
    </TR>
  </thead>

  <TBODY>
    <Κλάση TR = «πρόβλεψη»>
      <πλάτος TD = 100′>
        <UL>
          <Li τάξη = «υψηλή»>Υψηλή: 72&DEG;F</Li>
          <Li τάξη = «χαμηλής»>Χαμηλή: 44&DEG;F</Li>
          <Li τάξη = «κατάσταση»>Ηλιόλουστη
            <img src =’
http://deskwx.weatherbug.com/images/Forecast/icons/localized/60×50/EN/trans/cond007.png’ πλάτος ='42’ ύψος ='42’ ALT =” />
          </Li>
        </UL>
      </TD>
    </TR>

  </TBODY>

</Πίνακας>

Θα σημειωθεί ότι ακόμα κι αν το διαδρομή για την ίδια την εικόνα δείχνει την σωστή διάσταση (60×50) ανάγκασε τον αρχικό προμηθευτή σε 42×42.  Γιατί?  Τρελό,.

Ούτως ή άλλως, Θα ήθελα μια γρήγορη και εύκολη λύση σε αυτό το θέμα και γύρισα να jQuery.  Το κόλπο ήταν να εντοπίσει όλα τα κατάλληλα <img> Ετικέτες.  Δεν ήθελα να βόρβορος σχετικά με οποιεσδήποτε άλλες ετικέττες img (των οποίων υπάρχουν πολλές).  Αυτό το κομμάτι της jQuery έκανε το κόλπο:

<σενάριο τύπο = text/javascript"" src ="http://Ajax.googleapis.com/Ajax/libs/jQuery/1.5/jQuery.min.js"></σενάριο>

<σενάριο τύπο = "text/javascript">
     $(έγγραφο).έτοιμο(συνάρτηση () {

         $(«li.condition > img»).κάθε(συνάρτηση (Δείκτης, στοιχείο)
           
{
             $(στοιχείο).CSS("Πλάτος", "60"); 
             $(στοιχείο).CSS("ύψος", "50");
            });
     }); // έγγραφο φορτίο
</σενάριο>

Εκείνο το κομμάτι του κώδικα που βρίσκει τη συλλογή <Li> Ετικέτες κατηγορίας του οποίου είναι "κατάσταση" και <img> τα παιδιά.  Στη συνέχεια εκτελεί επαναλήψεις μέσα από όλα αυτά.  Έλυσα αρέσω έναs γοητεία.

Εγώ κατά πάσα πιθανότητα θα μπορούσε να βελτιώσει αυτό, αλλά ποτέ δεν ήμουν ένα το είδος τύπου unix που έλυσε π να 18 ψηφία ακρίβεια χρησιμοποιώντας sed και awk και δεν είμαι αυτού του είδους, αν jQuery τύπος είτε Χαμόγελο.

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Αναλάβει τον έλεγχο της σας OK και ακυρώσετε κουμπιά

Έγραψα αυτό το άρθρο λίγο πίσω, αλλά μοιάζει με δεν συνδέουν σε αυτό από το blog μου, τη στιγμή, τόσο εδώ πηγαίνει:

image

Αυτό το άρθρο περιγράφει πώς να αναγκάσει newform.aspx να ανακατευθύνει σε μία σελίδα, όταν ο χρήστης κάνει κλικ OK και διαφορετική σελίδα όταν κάνει κλικ στο κουμπί "Άκυρο".

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin

Γρήγορη συμβουλή: Προσθήκη jQuery σε σελίδες δημοσίευσης MOSS

Κατά την ενίσχυση ΒΡΎΑ ΕΚΔΟΤΙΚΗ σελίδες χρησιμοποιώντας jQuery, Χτύπησα την ακόλουθη ταχύτητα χτύπημα:

Σφάλμα διακομιστή στην ' /’ Εφαρμογή.


Σφάλμα ανάλυσης

Περιγραφή: Παρουσιάστηκε σφάλμα κατά την ανάλυση ενός πόρου που απαιτείται για να εξυπηρετηθεί αυτή η αίτηση. Διαβάστε τις παρακάτω λεπτομέρειες σφάλματος συγκεκριμένες ανάλυσης και τροποποιήσετε το αρχείο προέλευσης καταλλήλως.

Εμφανίζεται το μήνυμα λάθους ανάλυσης: Μόνο τα στοιχεία ελέγχου περιεχομένου επιτρέπονται άμεσα σε μια σελίδα περιεχομένου που περιέχει στοιχεία ελέγχου περιεχομένου.

Προέλευση σφάλματος:

 
Line 10: 
Line 11: 
Line 12: <script 
Line 13:     type="text/javascript" 
Line 14:     src="/jQuery/jquery-1.4.min.js"> 

Αρχείο προέλευσης: /_catalogs/masterpage/KCC_FacultyMember.aspx    Γραμμή: 12


Πληροφορίες για την έκδοση: Microsoft.NET Framework έκδοση:2.0.50727.4927; ASP.Έκδοση NET:2.0.50727.4927

Ήταν αρκετά εύκολο να καθορίσει (h/t στη συνάδελφό μου, Uday Ethirajulu).  Να είστε βέβαιος ότι η jQuery κώδικα ζει μέσα το "PlaceHolderAdditionalPageHead", όπως φαίνεται:

<ASP:Περιεκτικότητα σε ContentPlaceholderID = "PlaceHolderAdditionalPageHead" RUNAT = "server">

<σενάριο

    τύπο = text/javascript""

    src="/jQuery/jQuery-1.4.min.js">

</σενάριο>

<σενάριο τύπο = "text/javascript">

  $(έγγραφο).έτοιμο(συνάρτηση() {

   // Λαμπρή jQuery πράγματα πηγαίνει εδώ.

   });

</σενάριο>

</Τέλος>

Εγγραφείτε στο blog μου.

Συνέχεια μου για Twitter σε http://www.twitter.com/pagalvin