A felhasználói élmény fokozása az SPFx egyéni előugró hivatkozásaival
A modern SharePoint fejlesztésben a PnP Modern Search WebPart (SPFx) használata konfigurálható keresési eredmények biztosítására jelentősen javíthatja a felhasználói élményt. A linkek megnyitásának szabályozása népszerű funkció a fejlesztők körében, különösen a "Részletes lista" elrendezés esetén. Általában a hivatkozások új lapon nyílnak meg, de mi van akkor, ha egy felugró ablakban szeretnénk megnyitni?
Ebben a bejegyzésben megvizsgáljuk, hogyan lehet megvalósítani ezt a funkciót a PnP Modern Search WebPart hivatkozási viselkedésének megváltoztatásával. Ahelyett, hogy új lapon nyitnánk meg a keresési eredményeket, megmutatjuk, hogyan kényszeríthetjük ki a linket egy testreszabott felugró ablakban, ami integráltabb felhasználói élményt eredményez.
A kihívás akkor merül fel, ha olyan képletet használ, mint a ``, amely alapértelmezés szerint új lapra vált. A JavaScript használatával azonban felülírhatjuk ezt a viselkedést, és megnyithatjuk a hivatkozást egy ellenőrzött felugró ablakban. Ez nagyobb rugalmasságot tesz lehetővé a tartalom ugyanazon böngészési munkameneten belüli megjelenítésében.
Parancs | Használati példa |
---|---|
window.open() | Ez a parancs egy új böngészőablakot vagy lapot nyit meg. Ez a módszer egy felugró ablakot nyit meg bizonyos méretekkel és tulajdonságokkal, például szélességgel, magassággal és görgetősávokkal. |
event.preventDefault() | Megakadályozza a kattintott hivatkozások alapértelmezett viselkedését, azaz az URL megnyitását ugyanazon vagy új lapon. Ez lehetővé teszi számunkra, hogy személyre szabjuk a link működését, például nyisson meg helyette egy felugró ablakot. |
querySelectorAll() | A data-popup attribútum kijelöli az összes horgonyelemet (). Ez a metódus egy NodeList-et ad vissza, amely lehetővé teszi, hogy eseményfigyelőket alkalmazzunk több komponensre egyidejűleg. |
forEach() | A querySelectorAll() által előállított NodeList minden bejegyzése műveletet kap (például eseményfigyelő csatolása). Ez a PnP Modern Search számos dinamikus hivatkozási elemének kezelésére vonatkozik. |
addEventListener() | Ez a technika minden hivatkozáshoz hozzáad egy kattintási eseményfigyelőt, amely elindítja az openInPopup() függvényt. Az alapértelmezett kattintási viselkedés felülbírálásához szükséges. |
import { override } | Ez a dekorátor a SharePoint-keretrendszer (SPFx) része, és az SPFx WebParts alapértelmezett viselkedésének felülbírálására szolgál. Lehetővé teszi bizonyos testreszabások elvégzését, például JavaScript beillesztését a popup funkció biztosításához. |
@override | Az SPFx-ben a dekorátor azt jelzi, hogy egy módszer vagy tulajdonság felülírja a funkcionalitást. Erre a SharePoint-összetevők viselkedésének módosításakor van szükség. |
spyOn() | Figyeli a funkcióhívásokat a Jasmine készülék tesztelése során. Ebben a forgatókönyvben a window.open() függvényben használatos annak biztosítására, hogy a felugró ablak megfelelően elinduljon a tesztelés során. |
expect() | Ez a parancs a Jasmine egység tesztelésére szolgál. Ellenőrzi, hogy a window.open() a megfelelő argumentumokkal lett-e meghívva, garantálva, hogy az előugró ablak a kívánt beállításokkal jelenik meg. |
Az SPFx felugró ablak megoldásának megértése
1. megoldás: A JavaScript `window.open` használata felugró ablak létrehozásához
<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. megoldás: Inline JavaScript hozzáadása közvetlenül a linkcímkéhez
<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. megoldás: Háttér-megközelítés SPFx használatával JavaScript-injekcióval
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');
}
Egységteszt JavaScript előugró ablakok viselkedésére
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));
});
});
Az eseménykezelés és a dinamikus JavaScript-injekció felfedezése az SPFx-ben
Legfontosabb tudnivalók az előugró ablakok SPFx-ben való megvalósításához
Referenciák és források
- A PnP Modern Search WebParttal (SPFx) és a hivatkozási viselkedés testreszabásával kapcsolatos információk a hivatalos dokumentációból származnak. További részletekért keresse fel a PnP Modern Search GitHub Repository .
- Útmutató a JavaScript-módszerek használatához, mint pl window.open() és eseményhallgatókra hivatkoztak a MDN Web Docs JavaScripthez.
- Részletek a SharePoint Framework (SPFx) testreszabásáról, beleértve a JavaScript-befecskendezést és @override, megtalálható a SharePoint-keretrendszer áttekintése .