Izboljšanje uporabniške izkušnje s pojavnimi povezavami po meri v SPFx
V sodobnem razvoju SharePointa lahko uporaba PnP Modern Search WebPart (SPFx) za zagotavljanje nastavljivih rezultatov iskanja bistveno izboljša uporabniško izkušnjo. Nadziranje odpiranja povezav je priljubljena funkcija med razvijalci, zlasti s postavitvijo »Podroben seznam«. Običajno se povezave odprejo v novem zavihku, kaj pa, če jih želimo odpreti v pojavnem oknu?
V tej objavi si bomo ogledali, kako implementirati to funkcionalnost s spreminjanjem vedenja povezave spletnega dela PnP Modern Search. Namesto odpiranja rezultatov iskanja v novem zavihku, bomo pokazali, kako prisilno odpreti povezavo v prilagojenem pojavnem oknu, kar ima za posledico bolj integrirano uporabniško izkušnjo.
Izziv nastane, ko uporabite formulo, kot je ``, ki privzeto nastavi nov zavihek. Vendar pa lahko z uporabo JavaScripta preglasimo to vedenje in odpremo povezavo v nadzorovanem pojavnem oknu. To omogoča večjo prilagodljivost pri prikazovanju vsebine znotraj iste seje brskanja.
Ukaz | Primer uporabe |
---|---|
window.open() | Ta ukaz odpre novo okno ali zavihek brskalnika. Ta metoda odpre pojavno okno z določenimi dimenzijami in lastnostmi, kot so širina, višina in drsni trakovi. |
event.preventDefault() | Prepreči privzeto vedenje kliknjene povezave, to je odpiranje URL-ja v istem ali novem zavihku. To nam omogoča prilagoditev delovanja povezave, na primer odpiranje pojavnega okna. |
querySelectorAll() | Atribut data-popup izbere vse sidrne elemente (). Ta metoda vrne NodeList, ki nam omogoča, da poslušalce dogodkov uporabimo za več komponent hkrati. |
forEach() | Vsak vnos v NodeList, ki ga ustvari querySelectorAll(), prejme dejanje (na primer pripenjanje poslušalca dogodkov). To velja za upravljanje številnih elementov dinamične povezave v PnP Modern Search. |
addEventListener() | Ta tehnika vsaki povezavi doda poslušalca dogodka klika, ki sproži funkcijo openInPopup(). Potreben je za preglasitev privzetega delovanja klika. |
import { override } | Ta dekorator je del ogrodja SharePoint Framework (SPFx) in se uporablja za preglasitev privzetega vedenja spletnih delov SPFx. Omogoča posebne prilagoditve, kot je vstavljanje JavaScripta za zagotavljanje funkcionalnosti pojavnih oken. |
@override | V SPFx dekorater označuje, da metoda ali lastnost preglasi funkcionalnost. To je potrebno pri spreminjanju vedenja komponent SharePoint. |
spyOn() | Spremlja funkcijske klice med testiranjem enote z Jasmine. V tem scenariju se uporablja z window.open(), da se zagotovi, da se pojavno okno med testiranjem ustrezno zažene. |
expect() | Ta ukaz se uporablja za testiranje enot v Jasmine. Preveri, ali je bil window.open() poklican s pravilnimi argumenti, kar zagotavlja, da se pojavi pojavno okno z želenimi nastavitvami. |
Razumevanje rešitve pojavnih oken v SPFx
1. rešitev: Uporaba JavaScripta `window.open` za ustvarjanje pojavnega okna
<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>
2. rešitev: dodajanje vgrajenega JavaScripta neposredno v oznako povezave
<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.
3. rešitev: Zaledni pristop z uporabo SPFx z vstavljanjem JavaScripta
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');
}
Preizkus enote za obnašanje pojavnih oken JavaScript
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));
});
});
Raziskovanje obravnavanja dogodkov in dinamičnega vbrizgavanja JavaScripta v SPFx
Ključni povzetki za implementacijo pojavnih oken v SPFx
Reference in viri
- Informacije o PnP Modern Search WebPart (SPFx) in prilagajanju vedenja povezav so bile pridobljene iz uradne dokumentacije. Za več podrobnosti obiščite PnP Modern Search GitHub Repozitorij .
- Navodila za uporabo metod JavaScript, kot je npr window.open() in poslušalci dogodkov so se sklicevali na Spletni dokumenti MDN za JavaScript.
- Podrobnosti o prilagoditvah SharePoint Framework (SPFx), vključno z vstavljanjem JavaScripta in @preglasi, najdete v Pregled SharePoint Framework .