Meningkatkan Pengalaman Pengguna dengan Pautan Pop Timbul Tersuai dalam SPFx
Dalam pembangunan SharePoint moden, menggunakan PnP Modern Search WebPart (SPFx) untuk menyediakan hasil carian boleh dikonfigurasikan boleh meningkatkan pengalaman pengguna dengan ketara. Mengawal cara pautan dibuka ialah ciri yang popular di kalangan pembangun, terutamanya dengan reka letak "Senarai Terperinci". Biasanya, pautan dibuka dalam tab baharu, tetapi bagaimana jika kita mahu membukanya dalam tetingkap pop timbul?
Dalam siaran ini, kita akan melihat cara melaksanakan fungsi ini dengan menukar tingkah laku pautan Bahagian Web Carian Moden PnP. Daripada membuka hasil carian dalam tab baharu, kami akan menunjukkan cara memaksa pautan dibuka dalam tetingkap timbul tersuai, menghasilkan pengalaman pengguna yang lebih bersepadu.
Cabaran timbul apabila anda menggunakan formula seperti ``, yang lalai kepada tab baharu. Walau bagaimanapun, dengan menggunakan JavaScript, kami boleh mengatasi tingkah laku ini dan membuka pautan dalam tetingkap pop timbul terkawal. Ini membolehkan lebih fleksibiliti dalam memaparkan kandungan dalam sesi penyemakan imbas yang sama.
Perintah | Contoh Penggunaan |
---|---|
window.open() | Perintah ini akan membuka tetingkap atau tab penyemak imbas baharu. Kaedah ini membuka tetingkap pop timbul dengan dimensi dan sifat tertentu, seperti lebar, tinggi dan bar skrol. |
event.preventDefault() | Menghalang tingkah laku lalai pautan yang diklik, iaitu membuka URL dalam tab yang sama atau baharu. Ini membolehkan kami menyesuaikan cara pautan bertindak, seperti membuka pop timbul. |
querySelectorAll() | Atribut pop timbul data memilih semua elemen utama (). Kaedah ini mengembalikan NodeList, yang membolehkan kami menggunakan pendengar acara kepada beberapa komponen secara serentak. |
forEach() | Setiap entri dalam NodeList yang dihasilkan oleh querySelectorAll() menerima tindakan (contohnya, melampirkan pendengar acara). Ini terpakai untuk mengurus banyak elemen pautan dinamik dalam Carian Moden PnP. |
addEventListener() | Teknik ini menambahkan pendengar acara klik pada setiap pautan yang mencetuskan fungsi openInPopup(). Ia adalah perlu untuk mengatasi tingkah laku klik lalai. |
import { override } | Penghias ini adalah sebahagian daripada Rangka Kerja SharePoint (SPFx) dan digunakan untuk mengatasi tingkah laku lalai SPFx WebParts. Ia membolehkan penyesuaian khusus, seperti menyuntik JavaScript untuk menyediakan fungsi pop timbul. |
@override | Dalam SPFx, penghias menunjukkan bahawa kaedah atau sifat mengatasi kefungsian. Ini perlu apabila mengubah suai gelagat komponen SharePoint. |
spyOn() | Memantau panggilan fungsi semasa ujian unit dengan Jasmine. Dalam senario ini, ia digunakan dengan window.open() untuk menjamin bahawa pop timbul dilancarkan dengan sewajarnya semasa ujian. |
expect() | Perintah ini digunakan untuk ujian unit dalam Jasmine. Ia menyemak bahawa window.open() telah dipanggil dengan hujah yang betul, menjamin bahawa pop timbul muncul dengan tetapan yang dikehendaki. |
Memahami Penyelesaian Tetingkap Popup dalam SPFx
Penyelesaian 1: Menggunakan JavaScript `window.open` untuk Mencipta Tetingkap Pop Timbul
<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>
Penyelesaian 2: Menambah JavaScript Sebaris Terus ke dalam Teg Pautan
<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.
Penyelesaian 3: Pendekatan Bahagian Belakang Menggunakan SPFx dengan Suntikan JavaScript
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');
}
Ujian Unit untuk Gelagat Pop Timbul JavaScript
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));
});
});
Meneroka Pengendalian Acara dan Suntikan JavaScript Dinamik dalam SPFx
Pengambilan Utama untuk Melaksanakan Windows Pop Timbul dalam SPFx
Rujukan dan Sumber
- Maklumat mengenai PnP Modern Search WebPart (SPFx) dan menyesuaikan tingkah laku pautan diperoleh daripada dokumentasi rasmi. Untuk butiran lanjut, lawati Repositori GitHub Carian Moden PnP .
- Panduan menggunakan kaedah JavaScript seperti window.open() dan pendengar acara dirujuk daripada Dokumen Web MDN untuk JavaScript.
- Butiran tentang penyesuaian SharePoint Framework (SPFx), termasuk suntikan JavaScript dan @override, boleh didapati dalam Gambaran Keseluruhan Rangka Kerja SharePoint .