Vartotojo patirties gerinimas naudojant pasirinktines SPFx iššokančiųjų langų nuorodas
Šiuolaikinio „SharePoint“ kūrimo metu naudojant PnP modernios paieškos žiniatinklio dalį (SPFx), kad būtų pateikti konfigūruojami paieškos rezultatai, galima žymiai pagerinti vartotojo patirtį. Nuorodų atidarymo valdymas yra populiari kūrėjų funkcija, ypač naudojant „Detaliojo sąrašo“ išdėstymą. Paprastai nuorodos atidaromos naujame skirtuke, bet ką daryti, jei norime jas atidaryti iššokančiajame lange?
Šiame įraše apžvelgsime, kaip įdiegti šią funkciją pakeičiant PnP modernios paieškos žiniatinklio dalies nuorodų elgseną. Užuot atidarę paieškos rezultatus naujame skirtuke, parodysime, kaip priverstinai atsidaryti nuorodą tinkintame iššokančiame lange, kad naudotojo patirtis būtų labiau integruota.
Iššūkis kyla, kai naudojate tokią formulę kaip `", kuri pagal numatytuosius nustatymus rodomas naujame skirtuke. Tačiau naudodami „JavaScript“ galime nepaisyti šio elgesio ir atidaryti nuorodą kontroliuojamame iššokančiame lange. Tai suteikia daugiau lankstumo rodant turinį tos pačios naršymo sesijos metu.
komandą | Naudojimo pavyzdys |
---|---|
window.open() | Ši komanda atidarys naują naršyklės langą arba skirtuką. Šis metodas atveria iššokantįjį langą su tam tikrais matmenimis ir savybėmis, pvz., plotiu, aukščiu ir slinkties juostomis. |
event.preventDefault() | Neleidžia atlikti numatytojo spustelėtos nuorodos veikimo, ty atidaryti URL tame pačiame arba naujame skirtuke. Tai leidžia mums tinkinti, kaip nuoroda veikia, pvz., atidaryti iššokantįjį langą. |
querySelectorAll() | Data-popup atributas pasirenka visus inkaro elementus (). Šis metodas grąžina NodeList, kuris leidžia mums vienu metu taikyti įvykių klausytojus keliems komponentams. |
forEach() | Kiekvienas querySelectorAll() sukurtas NodeList įrašas gauna veiksmą (pavyzdžiui, prideda įvykių klausytoją). Tai taikoma daugelio dinaminių nuorodų elementų tvarkymui PnP modernioje paieškoje. |
addEventListener() | Ši technika prideda paspaudimo įvykių klausytoją prie kiekvienos nuorodos, kuri suaktyvina funkciją openInPopup(). Tai būtina norint nepaisyti numatytojo paspaudimo elgesio. |
import { override } | Šis dekoratorius yra „SharePoint Framework“ (SPFx) dalis ir naudojamas norint nepaisyti numatytosios SPFx WebParts elgsenos. Tai leidžia atlikti konkrečius tinkinimus, pvz., „JavaScript“ įterpimą, kad būtų užtikrinta iššokančiųjų langų funkcija. |
@override | SPFx dekoratorius nurodo, kad metodas arba savybė viršija funkcionalumą. Tai būtina keičiant SharePoint komponentų veikimą. |
spyOn() | Stebi funkcijų iškvietimus įrenginio testavimo su Jasmine metu. Šiame scenarijuje jis naudojamas su window.open(), kad būtų užtikrinta, jog iššokantis langas bus tinkamai paleistas testavimo metu. |
expect() | Ši komanda naudojama „Jasmine“ vienetų testavimui. Jis patikrina, ar windows.open() buvo iškviestas tinkamais argumentais, užtikrinant, kad iššokantis langas pasirodys su norimais parametrais. |
Iššokančiųjų langų sprendimo supratimas naudojant SPFx
1 sprendimas: naudokite „JavaScript“ „window.open“, kad sukurtumėte iššokantįjį langą
<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 sprendimas: įtraukite „JavaScript“ tiesiai į nuorodos žymą
<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 sprendimas: Backend metodas naudojant SPFx su JavaScript įpurškimu
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');
}
„JavaScript“ iššokančiųjų langų veikimo vieneto testas
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));
});
});
Įvykių tvarkymo ir dinaminio JavaScript įvedimo tyrinėjimas naudojant SPFx
Pagrindiniai iškylančiųjų langų diegimo SPFx patarimai
Nuorodos ir ištekliai
- Informacija apie PnP Modern Search WebPart (SPFx) ir nuorodų elgsenos pritaikymą buvo gauta iš oficialių dokumentų. Norėdami gauti daugiau informacijos, apsilankykite PnP modernios paieškos „GitHub“ saugykla .
- „JavaScript“ metodų, tokių kaip window.open() ir įvykių klausytojai buvo nurodyti iš MDN žiniatinklio dokumentai skirtas JavaScript.
- Išsami informacija apie „SharePoint Framework“ (SPFx) tinkinimus, įskaitant „JavaScript“ įterpimą ir @override, galima rasti SharePoint Framework apžvalga .