SPFxలో అనుకూల పాప్అప్ లింక్లతో వినియోగదారు అనుభవాన్ని మెరుగుపరచడం
ఆధునిక షేర్పాయింట్ అభివృద్ధిలో, కాన్ఫిగర్ చేయదగిన శోధన ఫలితాలను అందించడానికి PnP ఆధునిక శోధన వెబ్పార్ట్ (SPFx)ని ఉపయోగించడం వినియోగదారు అనుభవాన్ని గణనీయంగా మెరుగుపరుస్తుంది. లింక్లు ఎలా తెరవబడతాయో నియంత్రించడం డెవలపర్లలో ఒక ప్రసిద్ధ లక్షణం, ముఖ్యంగా "వివరణాత్మక జాబితా" లేఅవుట్తో. సాధారణంగా, లింక్లు కొత్త ట్యాబ్లో తెరవబడతాయి, అయితే మనం వాటిని పాప్అప్ విండోలో తెరవాలనుకుంటే?
ఈ పోస్ట్లో, PnP ఆధునిక శోధన వెబ్పార్ట్ యొక్క లింక్ ప్రవర్తనను మార్చడం ద్వారా ఈ కార్యాచరణను ఎలా అమలు చేయాలో మేము పరిశీలిస్తాము. శోధన ఫలితాలను కొత్త ట్యాబ్లో తెరవడం కంటే, అనుకూలీకరించిన పాప్అప్ విండోలో లింక్ని ఎలా బలవంతంగా తెరవాలో చూపుతాము, ఫలితంగా మరింత సమగ్రమైన వినియోగదారు అనుభవం లభిస్తుంది.
మీరు కొత్త ట్యాబ్కి డిఫాల్ట్గా ఉండే `` వంటి ఫార్ములాను ఉపయోగించినప్పుడు సవాలు తలెత్తుతుంది. అయినప్పటికీ, JavaScriptని ఉపయోగించడం ద్వారా, మేము ఈ ప్రవర్తనను భర్తీ చేయవచ్చు మరియు నియంత్రిత పాప్అప్ విండోలో లింక్ని తెరవవచ్చు. ఇది ఒకే బ్రౌజింగ్ సెషన్లో కంటెంట్ను ప్రదర్శించడంలో మరింత సౌలభ్యాన్ని అనుమతిస్తుంది.
ఆదేశం | ఉపయోగం యొక్క ఉదాహరణ |
---|---|
window.open() | ఈ ఆదేశం కొత్త బ్రౌజర్ విండో లేదా ట్యాబ్ను తెరుస్తుంది. ఈ పద్ధతి వెడల్పు, ఎత్తు మరియు స్క్రోల్బార్లు వంటి నిర్దిష్ట కొలతలు మరియు లక్షణాలతో పాప్అప్ విండోను తెరుస్తుంది. |
event.preventDefault() | క్లిక్ చేసిన లింక్ యొక్క డిఫాల్ట్ ప్రవర్తనను నిరోధిస్తుంది, అంటే అదే లేదా కొత్త ట్యాబ్లో URLని తెరవడం. బదులుగా పాప్అప్ను తెరవడం వంటి లింక్ ఎలా పని చేస్తుందో అనుకూలీకరించడానికి ఇది మమ్మల్ని అనుమతిస్తుంది. |
querySelectorAll() | డేటా-పాప్అప్ లక్షణం అన్ని యాంకర్ ఎలిమెంట్లను ఎంచుకుంటుంది () ఈ పద్ధతి నోడ్లిస్ట్ను అందిస్తుంది, ఇది ఈవెంట్ శ్రోతలను ఒకేసారి అనేక భాగాలకు వర్తింపజేయడానికి అనుమతిస్తుంది. |
forEach() | querySelectorAll() ద్వారా రూపొందించబడిన నోడ్లిస్ట్లోని ప్రతి ఎంట్రీ ఒక చర్యను అందుకుంటుంది (ఉదాహరణకు, ఈవెంట్ లిజనర్ను జోడించడం). PnP ఆధునిక శోధనలో అనేక డైనమిక్ లింక్ ఎలిమెంట్లను నిర్వహించడానికి ఇది వర్తిస్తుంది. |
addEventListener() | ఈ టెక్నిక్ openInPopup() ఫంక్షన్ని ట్రిగ్గర్ చేసే ప్రతి లింక్కి క్లిక్ ఈవెంట్ లిజనర్ని జోడిస్తుంది. డిఫాల్ట్ క్లిక్ ప్రవర్తనను భర్తీ చేయడానికి ఇది అవసరం. |
import { override } | ఈ డెకరేటర్ షేర్పాయింట్ ఫ్రేమ్వర్క్ (SPFx)లో భాగం మరియు SPFx WebParts డిఫాల్ట్ ప్రవర్తనను భర్తీ చేయడానికి ఉపయోగించబడుతుంది. పాప్అప్ కార్యాచరణను అందించడానికి జావాస్క్రిప్ట్ను ఇంజెక్ట్ చేయడం వంటి నిర్దిష్ట అనుకూలీకరణలను ఇది ప్రారంభిస్తుంది. |
@override | SPFxలో, డెకరేటర్ ఒక పద్ధతి లేదా ఆస్తి కార్యాచరణను భర్తీ చేస్తుందని సూచిస్తుంది. SharePoint భాగాల ప్రవర్తనను సవరించేటప్పుడు ఇది అవసరం. |
spyOn() | జాస్మిన్తో యూనిట్ టెస్టింగ్ సమయంలో ఫంక్షన్ కాల్లను పర్యవేక్షిస్తుంది. ఈ దృష్టాంతంలో, పరీక్ష సమయంలో పాపప్ సముచితంగా ప్రారంభించబడిందని హామీ ఇవ్వడానికి ఇది window.open()తో ఉపయోగించబడుతుంది. |
expect() | ఈ కమాండ్ జాస్మిన్లో యూనిట్ టెస్టింగ్ కోసం ఉపయోగించబడుతుంది. ఇది window.open() సరైన ఆర్గ్యుమెంట్లతో పిలవబడిందని తనిఖీ చేస్తుంది, పాప్అప్ కావలసిన సెట్టింగ్లతో కనిపిస్తుంది అని హామీ ఇస్తుంది. |
SPFxలో పాప్అప్ విండో సొల్యూషన్ను అర్థం చేసుకోవడం
పరిష్కారం 1: పాప్అప్ విండోను సృష్టించడానికి JavaScript `window.open`ని ఉపయోగించడం
<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: లింక్ ట్యాగ్లో నేరుగా ఇన్లైన్ జావాస్క్రిప్ట్ని జోడించడం
<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: JavaScript ఇంజెక్షన్తో SPFxని ఉపయోగించి బ్యాకెండ్ అప్రోచ్
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');
}
జావాస్క్రిప్ట్ పాప్అప్ బిహేవియర్ కోసం యూనిట్ టెస్ట్
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));
});
});
SPFxలో ఈవెంట్ హ్యాండ్లింగ్ మరియు డైనమిక్ జావాస్క్రిప్ట్ ఇంజెక్షన్ని అన్వేషించడం
SPFxలో పాప్అప్ విండోస్ని అమలు చేయడానికి కీలకమైన అంశాలు
సూచనలు మరియు వనరులు
- PnP ఆధునిక శోధన వెబ్పార్ట్ (SPFx) మరియు అనుకూలీకరించే లింక్ ప్రవర్తనకు సంబంధించిన సమాచారం అధికారిక డాక్యుమెంటేషన్ నుండి తీసుకోబడింది. మరిన్ని వివరాల కోసం, సందర్శించండి PnP ఆధునిక శోధన GitHub రిపోజిటరీ .
- వంటి జావాస్క్రిప్ట్ పద్ధతులను ఉపయోగించడంపై మార్గదర్శకత్వం window.open() మరియు ఈవెంట్ శ్రోతలు నుండి ప్రస్తావించబడింది MDN వెబ్ డాక్స్ జావాస్క్రిప్ట్ కోసం.
- JavaScript ఇంజెక్షన్ మరియు సహా SharePoint ఫ్రేమ్వర్క్ (SPFx) అనుకూలీకరణల గురించిన వివరాలు @ఓవర్రైడ్, లో చూడవచ్చు షేర్పాయింట్ ఫ్రేమ్వర్క్ అవలోకనం .