Aggiungere (sostituire) il collegamento ipertestuale alle immagini in una raccolta di Immagini in Slideshow Web Part
-
10-12-2019 - |
Domanda
Sul nostro sito di team abbiamo aggiunto una web part che è una "raccolta di Immagini di Presentazione di" web part.Attualmente, cliccando sulle immagini che scorrono in slideshow indirizza il browser solo per l'immagine URL.Vorrei modificare il punto a qualsiasi altro URL della mia scelta.
Ho provato a forzare una modifica del codice javascript generato dalla presentazione web part utilizzando il mio script della pagina.Guardando la fonte, la raccolta di Immagini utilizza una var che imposta effettivamente il link, si chiama "linkArray":
var pictureArray = ['http://intranet/HomePicture/_w/image1.jpg','http://intranet/HomePicture/_w/image2.jpg'];
var linkArray = ['http://intranet/HomePicture/image1.jpg','http://intranet/HomePicture/image2.jpg'];
var titleArray = ['',''];
var descriptionArray = ['',''];
var heightArray = [268,268];
var widthArray = [383,383];
Con il mio script ho provato a cancellare l'array e inserire il mio link in esso, ma per qualche motivo il link per l'aggiornamento (es.il mio script funziona) dopo la prima immagine cambia.Anche se devo modificare manualmente la prima immagine del tag href script pensa ancora la "prima" dell'immagine è il secondo che la presentazione scorre.C'è un modo per forzare la funzione di sovrascrivere l'esistente javascript immediatamente al caricamento della pagina?
Soluzione 3
Dopo aver esaurito tutte le altre opzioni nel tentativo di forzare l'immagine della web part della pagina per iniziare a modificare i collegamenti dal primo elemento che carica, ho trovato una soluzione di soluzione per la soluzione per utilizzare semplicemente una funzione di rotazione sul mio array.Dal momento che il comportamento ha offensito le associazioni di immagine-a-ipertestuale da 1 elemento, ruotando l'array che assegnamento ai collegamenti dell'immagine di 1 si adatta bene.
Altri suggerimenti
In che modo la libreria di immagini Slideshow Web Part funziona
Articoli figurano vengono recuperati tramite Spquery da Libreria immagine e i risultati vengono salvati in array interno delle voci ImageInfo
.
public struct ImageInfo
{
public int width;
public int height;
public string src;
public string fullImageSrc;
public string title;
public string descrption;
}
Come manipolare le immagini per Slideshow
Potrebbe essere ottenuto con il costruttore sovrascritto SlideshowObject
, in tal caso è possibile fornire logica aggiuntiva quando viene creata SlideshowObject.
Ad esempio, l'esempio seguente dimostra come escludere le immagini senza titoli da visualizzarli in slideshow:
//Overridden SlideshowObject constructor with method for excluding pictures
function SlideshowObjectInitializer() {
SlideshowObject = (function(SlideshowObjectOrig) {
return function() {
//Exclude pictures
if(typeof excludePic != 'undefined') {
for(i=0,k=0;i<arguments[1].length;i++) {
var imageInfo = {src: arguments[1][i], fullImageSrc: arguments[2][i], title: arguments[3][i],description: arguments[4][i], height: arguments[5][i], width: arguments[6][i]};
if(excludePic(imageInfo)) {
for(j=1;j<7;j++) {
arguments[j].splice(i, 1);
}
i--;
}
}
}
//Call original SlideshowObject constructor
return SlideshowObjectOrig.apply(this, arguments);
};
})(SlideshowObject);
}
//Exclide pictures with no titles
function excludePic(imageInfo) {
return (imageInfo.title.length == 0);
}
ExecuteOrDelayUntilScriptLoaded(SlideshowObjectInitializer, 'imglib.js');
.
.
SlideshowObject
, in tal caso è possibile fornire logica aggiuntiva quando viene creata SlideshowObject.
//Overridden SlideshowObject constructor with method for excluding pictures
function SlideshowObjectInitializer() {
SlideshowObject = (function(SlideshowObjectOrig) {
return function() {
//Exclude pictures
if(typeof excludePic != 'undefined') {
for(i=0,k=0;i<arguments[1].length;i++) {
var imageInfo = {src: arguments[1][i], fullImageSrc: arguments[2][i], title: arguments[3][i],description: arguments[4][i], height: arguments[5][i], width: arguments[6][i]};
if(excludePic(imageInfo)) {
for(j=1;j<7;j++) {
arguments[j].splice(i, 1);
}
i--;
}
}
}
//Call original SlideshowObject constructor
return SlideshowObjectOrig.apply(this, arguments);
};
})(SlideshowObject);
}
//Exclide pictures with no titles
function excludePic(imageInfo) {
return (imageInfo.title.length == 0);
}
ExecuteOrDelayUntilScriptLoaded(SlideshowObjectInitializer, 'imglib.js');
Segui il mio blog Post per i dettagli.
Sembra che la prima immagine è già stato eseguito il rendering prima del tuo javascript esegue.Su idea è quella di "manualmente" individuare e modificare il tag href immagine direttamente nel DOM.