Uzlabojiet lietotāja pieredzi, izmantojot pielāgotas uznirstošās saites SPFx
Mūsdienu SharePoint izstrādē, izmantojot PnP Modern Search WebPart (SPFx), lai nodrošinātu konfigurējamus meklēšanas rezultātus, var ievērojami uzlabot lietotāja pieredzi. Saišu atvēršanas kontrole ir populāra funkcija izstrādātāju vidū, īpaši izmantojot izkārtojumu “Detalizētais saraksts”. Parasti saites tiek atvērtas jaunā cilnē, bet ko darīt, ja mēs vēlamies tās atvērt uznirstošajā logā?
Šajā ziņojumā mēs apskatīsim, kā ieviest šo funkcionalitāti, mainot PnP modernās meklēšanas tīmekļa daļas saites darbību. Tā vietā, lai atvērtu meklēšanas rezultātus jaunā cilnē, mēs parādīsim, kā piespiest saiti atvērt pielāgotā uznirstošajā logā, tādējādi nodrošinot integrētāku lietotāja pieredzi.
Izaicinājums rodas, ja izmantojat tādu formulu kā `", kas pēc noklusējuma ir jauna cilne. Tomēr, izmantojot JavaScript, mēs varam ignorēt šo darbību un atvērt saiti kontrolētā uznirstošajā logā. Tas nodrošina lielāku elastību, parādot saturu tajā pašā pārlūkošanas sesijā.
Komanda | Lietošanas piemērs |
---|---|
window.open() | Šī komanda atvērs jaunu pārlūkprogrammas logu vai cilni. Šī metode atver uznirstošo logu ar noteiktiem izmēriem un īpašībām, piemēram, platumu, augstumu un ritjoslām. |
event.preventDefault() | Novērš noklikšķinātās saites noklusējuma darbību, kas ir URL atvēršana tajā pašā vai jaunā cilnē. Tas ļauj mums pielāgot saites darbību, piemēram, atvērt uznirstošo logu. |
querySelectorAll() | Datu uznirstošais atribūts atlasa visus enkura elementus (). Šī metode atgriež NodeList, kas ļauj mums vienlaikus piemērot notikumu klausītājus vairākiem komponentiem. |
forEach() | Katrs ieraksts NodeList, ko veido querySelectorAll(), saņem darbību (piemēram, pievieno notikumu klausītāju). Tas attiecas uz daudzu dinamisko saišu elementu pārvaldību PnP modernajā meklēšanā. |
addEventListener() | Šis paņēmiens pievieno klikšķu notikumu uztvērēju katrai saitei, kas aktivizē funkciju openInPopup(). Tas ir nepieciešams, lai ignorētu noklusējuma klikšķu darbību. |
import { override } | Šis dekorētājs ir daļa no SharePoint Framework (SPFx) un tiek izmantots, lai ignorētu SPFx WebParts noklusējuma darbību. Tas nodrošina īpašus pielāgojumus, piemēram, JavaScript ievadīšanu, lai nodrošinātu uznirstošo logu funkcionalitāti. |
@override | SPFx dekorētājs norāda, ka metode vai rekvizīts ignorē funkcionalitāti. Tas ir nepieciešams, mainot SharePoint komponentu darbību. |
spyOn() | Pārrauga funkciju izsaukumus vienības testēšanas laikā ar Jasmine. Šajā scenārijā tas tiek izmantots kopā ar window.open(), lai nodrošinātu, ka uznirstošais logs tiek pareizi palaists testēšanas laikā. |
expect() | Šī komanda tiek izmantota vienību testēšanai Jasmine. Tas pārbauda, vai window.open() tika izsaukts ar pareiziem argumentiem, garantējot, ka uznirstošais logs tiek parādīts ar vajadzīgajiem iestatījumiem. |
Izpratne par uznirstošo logu risinājumu SPFx
1. risinājums: izmantojiet JavaScript `window.open`, lai izveidotu uznirstošo logu
<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. risinājums: pievienojiet iekļauto JavaScript tieši saites tagam
<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. risinājums: aizmugursistēmas pieeja, izmantojot SPFx ar JavaScript injekciju
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');
}
Vienības pārbaude JavaScript uznirstošo logu uzvedībai
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));
});
});
Notikumu apstrādes un dinamiskās JavaScript injekcijas izpēte SPFx
Galvenie ieteikumi uznirstošo logu ieviešanai SPFx
Atsauces un resursi
- Informācija par PnP Modern Search WebPart (SPFx) un saites darbības pielāgošanu tika iegūta no oficiālas dokumentācijas. Lai iegūtu sīkāku informāciju, apmeklējiet PnP modernās meklēšanas GitHub repozitorijs .
- Norādījumi par JavaScript metožu izmantošanu, piemēram, window.open() un notikumu klausītāji tika atsaukti no MDN tīmekļa dokumenti JavaScript.
- Sīkāka informācija par SharePoint Framework (SPFx) pielāgojumiem, tostarp JavaScript injekcijas un @override, var atrast SharePoint Framework pārskats .