Poboljšanje korisničkog iskustva s prilagođenim skočnim vezama u SPFx-u
U modernom razvoju sustava SharePoint korištenje PnP modernog web-dijela za pretraživanje (SPFx) za pružanje konfigurabilnih rezultata pretraživanja može značajno poboljšati korisničko iskustvo. Kontroliranje otvaranja veza popularna je značajka među programerima, posebno s izgledom "Detaljni popis". Obično se veze otvaraju u novoj kartici, ali što ako ih želimo otvoriti u skočnom prozoru?
U ovom ćemo postu pogledati kako implementirati ovu funkcionalnost promjenom ponašanja veze PnP modernog web-dijela za pretraživanje. Umjesto otvaranja rezultata pretraživanja u novoj kartici, pokazat ćemo kako prisilno otvoriti vezu u prilagođenom skočnom prozoru, što rezultira integriranijim korisničkim iskustvom.
Izazov nastaje kada koristite formulu poput ``, koja prema zadanim postavkama postavlja novu karticu. Međutim, korištenjem JavaScripta možemo nadjačati ovo ponašanje i otvoriti vezu u kontroliranom skočnom prozoru. To omogućuje veću fleksibilnost u prikazivanju sadržaja unutar iste sesije pregledavanja.
Naredba | Primjer upotrebe |
---|---|
window.open() | Ova naredba će otvoriti novi prozor preglednika ili karticu. Ova metoda otvara skočni prozor s određenim dimenzijama i svojstvima, kao što su širina, visina i trake za pomicanje. |
event.preventDefault() | Sprječava zadano ponašanje kliknute veze, a to je otvaranje URL-a u istoj ili novoj kartici. To nam omogućuje da prilagodimo način na koji veza djeluje, kao što je otvaranje skočnog prozora. |
querySelectorAll() | Atribut data-popup odabire sve elemente sidra (). Ova metoda vraća NodeList, koji nam omogućuje primjenu slušatelja događaja na nekoliko komponenti istovremeno. |
forEach() | Svaki unos u NodeList koji proizvodi querySelectorAll() prima akciju (na primjer, prilaganje slušatelja događaja). Ovo se odnosi na upravljanje mnogim elementima dinamičke veze u PnP Modern Search. |
addEventListener() | Ova tehnika dodaje slušatelja događaja klika svakoj vezi koja pokreće funkciju openInPopup(). Neophodno je za nadjačavanje zadanog ponašanja klika. |
import { override } | Ovaj dekorater dio je SharePoint Framework (SPFx) i koristi se za nadjačavanje zadanog ponašanja SPFx WebParts. Omogućuje specifične prilagodbe, kao što je umetanje JavaScripta za pružanje funkcionalnosti skočnih prozora. |
@override | U SPFxu dekorater označava da metoda ili svojstvo nadjačava funkcionalnost. Ovo je neophodno kada mijenjate ponašanje komponenti sustava SharePoint. |
spyOn() | Prati pozive funkcija tijekom testiranja jedinice s Jasmine. U ovom scenariju koristi se s window.open() kako bi se jamčilo da se skočni prozor ispravno pokreće tijekom testiranja. |
expect() | Ova se naredba koristi za testiranje jedinica u Jasmineu. Provjerava je li window.open() pozvan s ispravnim argumentima, jamčeći da se skočni prozor pojavljuje sa željenim postavkama. |
Razumijevanje rješenja za skočni prozor u SPFx-u
1. rješenje: korištenje JavaScripta `window.open` za stvaranje skočnog prozora
<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>
Rješenje 2: Dodavanje ugrađenog JavaScripta izravno u oznaku veze
<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.
Rješenje 3: Pozadinski pristup koji koristi SPFx s JavaScript injekcijom
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');
}
Jedinični test za ponašanje JavaScript skočnih prozora
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));
});
});
Istraživanje rukovanja događajima i dinamičkog JavaScript ubacivanja u SPFx
Ključni zaključci za implementaciju skočnih prozora u SPFx
Reference i resursi
- Informacije o PnP modernom web-dijelu za pretraživanje (SPFx) i prilagodbi ponašanja veze dobivene su iz službene dokumentacije. Za više detalja posjetite PnP moderno pretraživanje GitHub repozitorija .
- Smjernice za korištenje JavaScript metoda kao što su window.open() i slušatelja događaja referencirao je iz MDN web dokumenti za JavaScript.
- Pojedinosti o prilagodbama SharePoint Framework (SPFx), uključujući JavaScript injekciju i @nadjačati, možete pronaći u Pregled SharePoint Frameworka .