Kasutajakogemuse täiustamine SPFx-i kohandatud hüpikakna linkidega
Kaasaegses SharePointi arenduses võib PnP Modern Search WebParti (SPFx) kasutamine konfigureeritavate otsingutulemuste pakkumiseks kasutajakogemust märkimisväärselt parandada. Linkide avanemise juhtimine on arendajate seas populaarne funktsioon, eriti üksikasjaliku loendi paigutusega. Tavaliselt avanevad lingid uuel vahelehel, aga mis siis, kui tahame need avada hüpikaknas?
Selles postituses vaatleme, kuidas seda funktsiooni rakendada, muutes PnP kaasaegse otsingu veebiosa lingi käitumist. Selle asemel, et avada otsingutulemusi uuel vahelehel, näitame, kuidas sundida linki avama kohandatud hüpikaknas, mille tulemuseks on integreeritum kasutajakogemus.
Väljakutse tekib siis, kui kasutate sellist valemit nagu `", mis vaikimisi kuvab uue vahekaardi. Kuid JavaScripti kasutades saame selle käitumise alistada ja lingi avada kontrollitud hüpikaknas. See võimaldab sama sirvimisseansi jooksul sisu kuvamisel suuremat paindlikkust.
Käsk | Kasutusnäide |
---|---|
window.open() | See käsk avab uue brauseriakna või vahekaardi. See meetod avab hüpikakna teatud mõõtmete ja omadustega, nagu laius, kõrgus ja kerimisribad. |
event.preventDefault() | Takistab klõpsatud lingi vaikekäitumist, milleks on URL-i avamine samal või uuel vahekaardil. See võimaldab meil kohandada lingi toimimist, näiteks avada selle asemel hüpikakna. |
querySelectorAll() | Atribuut data-popup valib kõik ankurelemendid (). See meetod tagastab NodeList, mis võimaldab meil rakendada sündmuste kuulajaid korraga mitmele komponendile. |
forEach() | Iga querySelectorAll() loodud NodeListi kirje saab toimingu (näiteks sündmustekuulaja lisamine). See kehtib paljude dünaamiliste lingielementide haldamise kohta PnP kaasaegses otsingus. |
addEventListener() | See meetod lisab igale lingile klõpsamissündmuste kuulaja, mis käivitab funktsiooni openInPopup(). See on vajalik kliki vaikekäitumise alistamiseks. |
import { override } | See dekoraator on osa SharePointi raamistikust (SPFx) ja seda kasutatakse SPFx WebPartsi vaikekäitumise alistamiseks. See võimaldab konkreetseid kohandusi, näiteks JavaScripti sisestamist, et pakkuda hüpikakna funktsiooni. |
@override | SPFx-is näitab dekoraator, et meetod või omadus alistab funktsioonid. See on vajalik SharePointi komponentide käitumise muutmisel. |
spyOn() | Jälgib funktsioonikõnesid seadme Jasmine testimise ajal. Selle stsenaariumi korral kasutatakse seda koos window.open()-ga, et tagada hüpikakna õige käivitamine testimise ajal. |
expect() | Seda käsku kasutatakse Jasmine'i üksuste testimiseks. See kontrollib, et windows.open() kutsuti välja õigete argumentidega, tagades, et hüpikaken ilmub soovitud seadistustega. |
Hüpikakna lahenduse mõistmine SPFx-is
Lahendus 1: JavaScripti `window.open` kasutamine hüpikakna loomiseks
<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>
Lahendus 2: tekstisisese JavaScripti lisamine otse lingisildile
<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.
Lahendus 3: taustapõhine lähenemine SPFx-i ja JavaScripti süstimisega
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');
}
JavaScripti hüpikakende käitumise üksuse test
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));
});
});
Sündmuste haldamise ja dünaamilise JavaScripti sisestamise uurimine SPFx-is
Peamised näpunäited hüpikakende rakendamiseks SPFx-is
Viited ja ressursid
- Teave PnP kaasaegse otsingu veebiosa (SPFx) ja linkide käitumise kohandamise kohta saadi ametlikust dokumentatsioonist. Lisateabe saamiseks külastage PnP kaasaegse otsingu GitHubi hoidla .
- Juhised JavaScripti meetodite kasutamiseks, näiteks window.open() ja sündmuste kuulajatele viidati alates MDN-i veebidokumendid JavaScripti jaoks.
- Üksikasjad SharePoint Frameworki (SPFx) kohanduste kohta, sh JavaScripti sisestamine ja @alista, leiate aadressilt SharePointi raamistiku ülevaade .