SPFx-ലെ ഇഷ്ടാനുസൃത പോപ്പ്അപ്പ് ലിങ്കുകൾ ഉപയോഗിച്ച് ഉപയോക്തൃ അനുഭവം മെച്ചപ്പെടുത്തുന്നു
ആധുനിക ഷെയർപോയിൻ്റ് വികസനത്തിൽ, കോൺഫിഗർ ചെയ്യാവുന്ന തിരയൽ ഫലങ്ങൾ നൽകുന്നതിന് PnP മോഡേൺ സെർച്ച് വെബ്പാർട്ട് (SPFx) ഉപയോഗിക്കുന്നത് ഉപയോക്തൃ അനുഭവം ഗണ്യമായി മെച്ചപ്പെടുത്തും. ലിങ്കുകൾ തുറക്കുന്നത് നിയന്ത്രിക്കുന്നത് ഡെവലപ്പർമാർക്കിടയിൽ ഒരു ജനപ്രിയ സവിശേഷതയാണ്, പ്രത്യേകിച്ച് "വിശദമായ ലിസ്റ്റ്" ലേഔട്ടിനൊപ്പം. സാധാരണയായി, ലിങ്കുകൾ ഒരു പുതിയ ടാബിൽ തുറക്കും, എന്നാൽ നമുക്ക് അവ ഒരു പോപ്പ്അപ്പ് വിൻഡോയിൽ തുറക്കണമെങ്കിൽ എന്തുചെയ്യും?
ഈ പോസ്റ്റിൽ, PnP മോഡേൺ സെർച്ച് വെബ്പാർട്ടിൻ്റെ ലിങ്ക് സ്വഭാവം മാറ്റിക്കൊണ്ട് ഈ പ്രവർത്തനം എങ്ങനെ നടപ്പിലാക്കാമെന്ന് ഞങ്ങൾ നോക്കാം. ഒരു പുതിയ ടാബിൽ തിരയൽ ഫലങ്ങൾ തുറക്കുന്നതിനുപകരം, ഒരു ഇഷ്ടാനുസൃതമാക്കിയ പോപ്പ്അപ്പ് വിൻഡോയിൽ തുറക്കാൻ ലിങ്ക് എങ്ങനെ നിർബന്ധിക്കാമെന്ന് ഞങ്ങൾ കാണിക്കും, ഇത് കൂടുതൽ സംയോജിത ഉപയോക്തൃ അനുഭവത്തിന് കാരണമാകുന്നു.
ഒരു പുതിയ ടാബിലേക്ക് സ്ഥിരസ്ഥിതിയായി വരുന്ന `` പോലുള്ള ഒരു ഫോർമുല നിങ്ങൾ ഉപയോഗിക്കുമ്പോൾ വെല്ലുവിളി ഉയർന്നുവരുന്നു. എന്നിരുന്നാലും, JavaScript ഉപയോഗിക്കുന്നതിലൂടെ, നമുക്ക് ഈ സ്വഭാവം അസാധുവാക്കാനും നിയന്ത്രിത പോപ്പ്അപ്പ് വിൻഡോയിൽ ലിങ്ക് തുറക്കാനും കഴിയും. ഒരേ ബ്രൗസിംഗ് സെഷനിൽ ഉള്ളടക്കം പ്രദർശിപ്പിക്കുന്നതിന് ഇത് കൂടുതൽ വഴക്കം നൽകുന്നു.
കമാൻഡ് | ഉപയോഗത്തിൻ്റെ ഉദാഹരണം |
---|---|
window.open() | ഈ കമാൻഡ് ഒരു പുതിയ ബ്രൗസർ വിൻഡോ അല്ലെങ്കിൽ ടാബ് തുറക്കും. വീതി, ഉയരം, സ്ക്രോൾബാറുകൾ എന്നിവ പോലുള്ള ചില അളവുകളും സവിശേഷതകളും ഉള്ള ഒരു പോപ്പ്അപ്പ് വിൻഡോ ഈ രീതി തുറക്കുന്നു. |
event.preventDefault() | ക്ലിക്ക് ചെയ്ത ലിങ്കിൻ്റെ ഡിഫോൾട്ട് സ്വഭാവം തടയുന്നു, അതായത് അതേ അല്ലെങ്കിൽ പുതിയ ടാബിൽ URL തുറക്കുക. പകരം ഒരു പോപ്പ്അപ്പ് തുറക്കുന്നത് പോലെ, ലിങ്ക് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് ഇഷ്ടാനുസൃതമാക്കാൻ ഇത് ഞങ്ങളെ അനുവദിക്കുന്നു. |
querySelectorAll() | ഡാറ്റ-പോപ്പ്അപ്പ് ആട്രിബ്യൂട്ട് എല്ലാ ആങ്കർ ഘടകങ്ങളും തിരഞ്ഞെടുക്കുന്നു (). ഈ രീതി ഒരു നോഡ്ലിസ്റ്റ് നൽകുന്നു, ഇത് ഒരേസമയം നിരവധി ഘടകങ്ങളിലേക്ക് ഇവൻ്റ് ശ്രോതാക്കളെ പ്രയോഗിക്കാൻ ഞങ്ങളെ അനുവദിക്കുന്നു. |
forEach() | querySelectorAll() നിർമ്മിച്ച നോഡ്ലിസ്റ്റിലെ ഓരോ എൻട്രിക്കും ഒരു പ്രവർത്തനം ലഭിക്കും (ഉദാഹരണത്തിന്, ഒരു ഇവൻ്റ് ലിസണർ അറ്റാച്ചുചെയ്യുന്നു). PnP മോഡേൺ സെർച്ചിൽ നിരവധി ഡൈനാമിക് ലിങ്ക് ഘടകങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിന് ഇത് ബാധകമാണ്. |
addEventListener() | OpenInPopup() ഫംഗ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്ന ഓരോ ലിങ്കിലേക്കും ഒരു ക്ലിക്ക് ഇവൻ്റ് ലിസണർ ഈ ടെക്നിക് ചേർക്കുന്നു. ഡിഫോൾട്ട് ക്ലിക്ക് സ്വഭാവത്തെ മറികടക്കാൻ ഇത് ആവശ്യമാണ്. |
import { override } | ഈ ഡെക്കറേറ്റർ SharePoint Framework-ൻ്റെ (SPFx) ഭാഗമാണ്, SPFx WebParts-ൻ്റെ ഡിഫോൾട്ട് സ്വഭാവത്തെ മറികടക്കാൻ ഇത് ഉപയോഗിക്കുന്നു. പോപ്പ്അപ്പ് ഫംഗ്ഷണാലിറ്റി നൽകുന്നതിന് JavaScript കുത്തിവയ്ക്കുന്നത് പോലെയുള്ള നിർദ്ദിഷ്ട ഇഷ്ടാനുസൃതമാക്കലുകൾക്കായി ഇത് പ്രാപ്തമാക്കുന്നു. |
@override | SPFx-ൽ, ഒരു രീതി അല്ലെങ്കിൽ സ്വത്ത് പ്രവർത്തനത്തെ അസാധുവാക്കുന്നുവെന്ന് ഒരു അലങ്കാരപ്പണിക്കാരൻ സൂചിപ്പിക്കുന്നു. ഷെയർപോയിൻ്റ് ഘടകങ്ങളുടെ സ്വഭാവം പരിഷ്കരിക്കുമ്പോൾ ഇത് ആവശ്യമാണ്. |
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 റിപ്പോസിറ്ററി .
- പോലുള്ള JavaScript രീതികൾ ഉപയോഗിക്കുന്നതിനുള്ള മാർഗ്ഗനിർദ്ദേശം window.open() എന്നിവയിൽ നിന്ന് ഇവൻ്റ് ശ്രോതാക്കളെ പരാമർശിച്ചു MDN വെബ് ഡോക്സ് ജാവാസ്ക്രിപ്റ്റിനായി.
- JavaScript ഇഞ്ചക്ഷൻ ഉൾപ്പെടെയുള്ള ഷെയർപോയിൻ്റ് ഫ്രെയിംവർക്ക് (SPFx) കസ്റ്റമൈസേഷനുകളെക്കുറിച്ചുള്ള വിശദാംശങ്ങൾ @ഓവർറൈഡ്, എന്നതിൽ കണ്ടെത്താം ഷെയർപോയിൻ്റ് ഫ്രെയിംവർക്ക് അവലോകനം .