SPFx-এ কাস্টম পপআপ লিঙ্কগুলির সাথে ব্যবহারকারীর অভিজ্ঞতা বৃদ্ধি করা
আধুনিক শেয়ারপয়েন্ট ডেভেলপমেন্টে, কনফিগারযোগ্য অনুসন্ধান ফলাফল প্রদানের জন্য PnP আধুনিক অনুসন্ধান ওয়েবপার্ট (SPFx) ব্যবহার করা ব্যবহারকারীর অভিজ্ঞতাকে উল্লেখযোগ্যভাবে উন্নত করতে পারে। লিঙ্কগুলি কীভাবে খোলা হয় তা নিয়ন্ত্রণ করা বিকাশকারীদের মধ্যে একটি জনপ্রিয় বৈশিষ্ট্য, বিশেষ করে "বিশদ তালিকা" লেআউটের সাথে। সাধারণত, লিঙ্কগুলি একটি নতুন ট্যাবে খোলা হয়, কিন্তু আমরা যদি সেগুলিকে একটি পপআপ উইন্ডোতে খুলতে চাই তবে কী হবে?
এই পোস্টে, আমরা PnP আধুনিক অনুসন্ধান ওয়েবপার্টের লিঙ্ক আচরণ পরিবর্তন করে কিভাবে এই কার্যকারিতা বাস্তবায়ন করতে হয় তা দেখব। একটি নতুন ট্যাবে অনুসন্ধান ফলাফল খোলার পরিবর্তে, আমরা দেখাব কিভাবে লিঙ্কটিকে একটি কাস্টমাইজড পপআপ উইন্ডোতে খুলতে বাধ্য করা যায়, যার ফলে ব্যবহারকারীর অভিজ্ঞতা আরও একীভূত হয়৷
চ্যালেঞ্জ দেখা দেয় যখন আপনি `` এর মতো একটি সূত্র ব্যবহার করেন, যা একটি নতুন ট্যাবে ডিফল্ট। যাইহোক, জাভাস্ক্রিপ্ট ব্যবহার করে, আমরা এই আচরণটিকে ওভাররাইড করতে পারি এবং একটি নিয়ন্ত্রিত পপআপ উইন্ডোতে লিঙ্কটি খুলতে পারি। এটি একই ব্রাউজিং সেশনের মধ্যে সামগ্রী প্রদর্শনে আরও নমনীয়তার অনুমতি দেয়।
আদেশ | ব্যবহারের উদাহরণ |
---|---|
window.open() | এই কমান্ডটি একটি নতুন ব্রাউজার উইন্ডো বা ট্যাব খুলবে। এই পদ্ধতিটি নির্দিষ্ট মাত্রা এবং বৈশিষ্ট্য সহ একটি পপআপ উইন্ডো খোলে, যেমন প্রস্থ, উচ্চতা এবং স্ক্রলবার। |
event.preventDefault() | একটি ক্লিক করা লিঙ্কের ডিফল্ট আচরণ প্রতিরোধ করে, যা একই বা নতুন ট্যাবে URL খুলতে হয়। এটি আমাদের লিঙ্কটি কীভাবে কাজ করে তা কাস্টমাইজ করতে দেয়, যেমন পরিবর্তে একটি পপআপ খোলা। |
querySelectorAll() | ডেটা-পপআপ বৈশিষ্ট্য সমস্ত অ্যাঙ্কর উপাদান নির্বাচন করে () এই পদ্ধতিটি একটি নোডলিস্ট প্রদান করে, যা আমাদের একই সাথে একাধিক উপাদানে ইভেন্ট শ্রোতাদের প্রয়োগ করতে দেয়। |
forEach() | querySelectorAll() দ্বারা উত্পাদিত NodeList-এর প্রতিটি এন্ট্রি একটি অ্যাকশন পায় (উদাহরণস্বরূপ, একটি ইভেন্ট লিসেনার সংযুক্ত করা)। এটি PnP আধুনিক অনুসন্ধানে অনেক গতিশীল লিঙ্ক উপাদান পরিচালনার ক্ষেত্রে প্রযোজ্য। |
addEventListener() | এই কৌশলটি প্রতিটি লিঙ্কে একটি ক্লিক ইভেন্ট লিসেনার যোগ করে যা openInPopup() ফাংশনকে ট্রিগার করে। ডিফল্ট ক্লিক আচরণ ওভাররাইড করার জন্য এটি প্রয়োজনীয়। |
import { override } | এই ডেকোরেটরটি SharePoint Framework (SPFx) এর অংশ এবং SPFx ওয়েবপার্টের ডিফল্ট আচরণকে ওভাররাইড করতে ব্যবহৃত হয়। এটি নির্দিষ্ট কাস্টমাইজেশনের জন্য সক্ষম করে, যেমন পপআপ কার্যকারিতা প্রদান করতে জাভাস্ক্রিপ্ট ইনজেকশন করা। |
@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: জাভাস্ক্রিপ্ট ইনজেকশন সহ 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-এ ইভেন্ট হ্যান্ডলিং এবং ডাইনামিক জাভাস্ক্রিপ্ট ইনজেকশন অন্বেষণ করা
এসপিএফএক্সে পপআপ উইন্ডোজ বাস্তবায়নের জন্য মূল উপায়
তথ্যসূত্র এবং সম্পদ
- PnP মডার্ন সার্চ ওয়েবপার্ট (SPFx) এবং কাস্টমাইজিং লিঙ্ক আচরণ সম্পর্কিত তথ্য অফিসিয়াল ডকুমেন্টেশন থেকে নেওয়া হয়েছিল। আরো বিস্তারিত জানার জন্য, দেখুন PnP আধুনিক অনুসন্ধান GitHub সংগ্রহস্থল .
- জাভাস্ক্রিপ্ট পদ্ধতি ব্যবহার করার নির্দেশিকা যেমন window.open() এবং ইভেন্ট শ্রোতাদের থেকে উল্লেখ করা হয়েছে MDN ওয়েব ডক্স জাভাস্ক্রিপ্টের জন্য।
- শেয়ারপয়েন্ট ফ্রেমওয়ার্ক (SPFx) কাস্টমাইজেশন সম্পর্কে বিশদ বিবরণ, যার মধ্যে জাভাস্ক্রিপ্ট ইনজেকশন এবং @ওভাররাইড, পাওয়া যাবে শেয়ারপয়েন্ট ফ্রেমওয়ার্ক ওভারভিউ .