Paranna käyttökokemusta mukautetuilla ponnahduslinkeillä SPFx:ssä
Nykyaikaisessa SharePoint-kehityksessä PnP Modern Search WebPart (SPFx) -ominaisuuden käyttäminen konfiguroitavien hakutulosten tarjoamiseen voi parantaa käyttökokemusta merkittävästi. Linkkien avautumisen hallinta on suosittu ominaisuus kehittäjien keskuudessa, varsinkin "Yksityiskohtainen luettelo" -asettelussa. Yleensä linkit avautuvat uuteen välilehteen, mutta entä jos haluamme avata ne ponnahdusikkunassa?
Tässä viestissä tarkastelemme, kuinka tämä toiminto toteutetaan muuttamalla PnP Modern Search WebPartin linkkikäyttäytymistä. Sen sijaan, että avaamme hakutulokset uudessa välilehdessä, näytämme, kuinka linkki pakotetaan avautumaan mukautetussa ponnahdusikkunassa, mikä johtaa integroidumpaan käyttökokemukseen.
Haaste syntyy, kun käytät kaavaa, kuten `", joka on oletuksena uusi välilehti. JavaScriptiä käyttämällä voimme kuitenkin ohittaa tämän toiminnan ja avata linkin ohjatussa ponnahdusikkunassa. Tämä mahdollistaa enemmän joustavuutta sisällön näyttämisessä saman selausistunnon aikana.
Komento | Käyttöesimerkki |
---|---|
window.open() | Tämä komento avaa uuden selainikkunan tai välilehden. Tämä menetelmä avaa ponnahdusikkunan, jossa on tietyt mitat ja ominaisuudet, kuten leveys, korkeus ja vierityspalkit. |
event.preventDefault() | Estää napsautetun linkin oletuskäytön, joka on URL-osoitteen avaaminen samassa tai uudessa välilehdessä. Tämän avulla voimme mukauttaa linkin toimintaa, esimerkiksi avata ponnahdusikkunan. |
querySelectorAll() | Data-popup-attribuutti valitsee kaikki ankkurielementit (). Tämä menetelmä palauttaa NodeList-luettelon, jonka avulla voimme soveltaa tapahtumakuuntelijoita useisiin komponentteihin samanaikaisesti. |
forEach() | Jokainen querySelectorAll():n tuottama NodeList-merkintä vastaanottaa toiminnon (esimerkiksi tapahtumakuuntelijan liittämisen). Tämä koskee monien dynaamisten linkkielementtien hallintaa PnP Modern Searchissa. |
addEventListener() | Tämä tekniikka lisää napsautustapahtuman kuuntelijan jokaiseen linkkiin, joka käynnistää openInPopup()-funktion. Se on välttämätön oletusnapsautuskäyttäytymisen ohittamiseksi. |
import { override } | Tämä koristelu on osa SharePoint Frameworkia (SPFx) ja sitä käytetään ohittamaan SPFx WebPartsin oletuskäyttäytyminen. Se mahdollistaa tietyt mukautukset, kuten JavaScriptin lisäämisen ponnahdusikkunoiden tarjoamiseksi. |
@override | SPFx:ssä sisustaja osoittaa, että menetelmä tai ominaisuus ohittaa toiminnallisuuden. Tämä on tarpeen, kun muutetaan SharePoint-komponenttien toimintaa. |
spyOn() | Valvoo toimintokutsuja yksikkötestauksen aikana Jasmine kanssa. Tässä skenaariossa sitä käytetään windows.open():n kanssa varmistamaan, että ponnahdusikkuna käynnistetään asianmukaisesti testauksen aikana. |
expect() | Tätä komentoa käytetään yksikkötestaukseen Jasminessa. Se tarkistaa, että window.open() kutsuttiin oikeilla argumenteilla, mikä takaa, että ponnahdusikkuna tulee näkyviin halutuilla asetuksilla. |
Ponnahdusikkunaratkaisun ymmärtäminen SPFx:ssä
Ratkaisu 1: Luo ponnahdusikkuna JavaScriptin "window.open" avulla
<script>
function openInPopup(url) {
// Define popup window features
const features = 'width=800,height=600,resizable=yes,scrollbars=yes';
// Open URL in popup
window.open(url, '_blank', features);
}
// Override link behavior
document.querySelectorAll('a[data-popup="true"]').forEach(function (link) {
link.addEventListener('click', function (event) {
event.preventDefault(); // Prevent default link behavior
openInPopup(this.href); // Open in popup
});
});
</script>
// HTML for the link:
<a href="{{slot item @root.slots.PreviewUrl}}" data-popup="true" style="color: {{@root.theme.semanticColors.link}}">
{{slot item @root.slots.Destination}}
</a>
Ratkaisu 2: Lisää sisäinen JavaScript suoraan linkkitunnisteeseen
<a href="{{slot item @root.slots.PreviewUrl}}"
onclick="event.preventDefault(); window.open(this.href, '_blank', 'width=800,height=600');"
style="color: {{@root.theme.semanticColors.link}}">
{{slot item @root.slots.Destination}}
</a>
// The window.open parameters define the size and behavior of the popup.
Ratkaisu 3: Taustaratkaisu SPFx:n ja JavaScript-injektion avulla
import { override } from '@microsoft/decorators';
import { BaseClientSideWebPart } from '@microsoft/sp-webpart-base';
export default class PopupWebPart extends BaseClientSideWebPart {
@override
public render(): void {
this.domElement.innerHTML = `
<a href="{{slot item @root.slots.PreviewUrl}}" onclick="openPopup(this.href)">
{{slot item @root.slots.Destination}}
</a>
`;
}
}
function openPopup(url: string): void {
window.open(url, '_blank', 'width=800,height=600,resizable=yes');
}
Yksikkötesti JavaScript-ponnahdusikkunoiden käyttäytymiselle
describe('Popup Functionality', function() {
it('should open the link in a popup window', function() {
spyOn(window, 'open');
const testUrl = 'http://example.com';
openInPopup(testUrl);
expect(window.open).toHaveBeenCalledWith(testUrl, '_blank', jasmine.any(String));
});
});
Tapahtumankäsittelyn ja dynaamisen JavaScript-injektion tutkiminen SPFx:ssä
Tärkeimmät ponnahdusikkunoiden käyttöönotto SPFx:ssä
Referenssit ja resurssit
- Tiedot PnP Modern Search WebPartista (SPFx) ja linkkien toiminnan mukauttamisesta saatiin virallisesta dokumentaatiosta. Lisätietoja on osoitteessa PnP Modern Search GitHub Repository .
- Ohjeita JavaScript-menetelmien käyttöön, kuten window.open() ja tapahtumakuuntelijoihin viitattiin MDN Web Docs JavaScriptille.
- Tietoja SharePoint Framework (SPFx) -muokkauksista, mukaan lukien JavaScript-injektio ja @ohittaa, löytyy SharePoint Frameworkin yleiskatsaus .