Aprimorando a experiência do usuário com links pop-up personalizados no SPFx
No desenvolvimento moderno do SharePoint, usar o PnP Modern Search WebPart (SPFx) para fornecer resultados de pesquisa configuráveis pode melhorar significativamente a experiência do usuário. Controlar como os links abrem é um recurso popular entre os desenvolvedores, especialmente com o layout “Lista detalhada”. Normalmente, os links abrem em uma nova aba, mas e se quisermos abri-los em uma janela pop-up?
Nesta postagem, veremos como implementar essa funcionalidade alterando o comportamento do link da WebPart PnP Modern Search. Em vez de abrir os resultados da pesquisa em uma nova guia, mostraremos como forçar a abertura do link em uma janela pop-up personalizada, resultando em uma experiência de usuário mais integrada.
O desafio surge quando você usa uma fórmula como ``, cujo padrão é uma nova guia. Entretanto, usando JavaScript, podemos substituir esse comportamento e abrir o link em uma janela pop-up controlada. Isso permite mais flexibilidade na exibição de conteúdo na mesma sessão de navegação.
Orientaremos você nas etapas necessárias para desenvolver esse recurso, com foco no uso de JavaScript e SPFx para melhorar o layout da lista detalhada. Fique atento enquanto percorremos a solução para garantir que seu site SharePoint seja perfeito e fácil de usar.
Comando | Exemplo de uso |
---|---|
window.open() | Este comando abrirá uma nova janela ou guia do navegador. Este método abre uma janela pop-up com determinadas dimensões e propriedades, como largura, altura e barras de rolagem. |
event.preventDefault() | Impede o comportamento padrão de um link clicado, que é abrir o URL na mesma ou em uma nova guia. Isso nos permite personalizar o funcionamento do link, como abrir um pop-up. |
querySelectorAll() | O atributo data-popup seleciona todos os elementos âncora (). Este método retorna um NodeList, que nos permite aplicar ouvintes de eventos a vários componentes simultaneamente. |
forEach() | Cada entrada no NodeList produzida por querySelectorAll() recebe uma ação (por exemplo, anexar um ouvinte de evento). Isso se aplica ao gerenciamento de muitos elementos de link dinâmico na Pesquisa Moderna PnP. |
addEventListener() | Esta técnica adiciona um ouvinte de evento click a cada link que aciona a função openInPopup(). É necessário substituir o comportamento de clique padrão. |
import { override } | Esse decorador faz parte da Estrutura do SharePoint (SPFx) e é usado para substituir o comportamento padrão dos WebParts SPFx. Ele permite personalizações específicas, como injeção de JavaScript para fornecer funcionalidade pop-up. |
@override | No SPFx, um decorador indica que um método ou propriedade substitui a funcionalidade. Isso é necessário ao modificar o comportamento dos componentes do SharePoint. |
spyOn() | Monitora chamadas de função durante testes de unidade com Jasmine. Neste cenário, é usado com window.open() para garantir que o pop-up seja iniciado adequadamente durante o teste. |
expect() | Este comando é usado para testes de unidade no Jasmine. Ele verifica se window.open() foi chamado com os argumentos corretos, garantindo que o popup apareça com as configurações desejadas. |
Compreendendo a solução de janela pop-up no SPFx
Os scripts listados acima ajustam o comportamento padrão dos links em uma WebPart de pesquisa moderna PnP (SPFx). Por padrão, os links usam o tag para abrir em uma nova guia. Contudo, o objetivo aqui é abrir esses links em uma janela pop-up, aumentando assim a interação do usuário. Para conseguir isso, usamos o função, que permite aos desenvolvedores abrir URLs em uma nova janela ou pop-up do navegador. Esta função pode ser ajustada com parâmetros específicos, como largura, altura e outros atributos (como barras de rolagem ou redimensionamento), para garantir que o pop-up funcione conforme esperado.
Substituir o comportamento de clique padrão das tags âncora é um componente vital da abordagem. Isto é feito com , o que impede que o link seja aberto em uma nova guia. Em vez disso, anexamos um ouvinte de evento ao link, que ativa uma função personalizada (neste caso, ) que manipula o evento click e abre o URL em uma janela pop-up. Isso permite aos desenvolvedores mais controle sobre o comportamento do link e resulta em uma experiência de usuário mais consistente na WebPart de pesquisa moderna PnP.
Além de lidar com o comportamento de front-end, também examinamos uma abordagem de back-end usando decoradores integrados ao SPFx, como . Essa abordagem permite que os desenvolvedores insiram JavaScript diretamente em WebParts personalizados, modificando ainda mais o comportamento dos resultados da pesquisa. Substituir o processo de renderização no SPFx nos permite injetar código JavaScript que lida com cliques em links e abre o material necessário em uma janela pop-up. Essa técnica torna a solução mais modular e reutilizável em diversas áreas de um ambiente SharePoint, melhorando assim a manutenção.
O teste de unidade é fundamental para garantir que o recurso pop-up funcione corretamente em vários ambientes e navegadores. Usando em uma estrutura de testes Jasmine valida que o O método é executado com os argumentos corretos. Esta forma de teste identifica possíveis problemas no início do processo de desenvolvimento e garante que as janelas pop-up funcionem conforme planejado. Esta solução fortalece as interações do usuário no PnP Modern Search WebPart do SharePoint, integrando manipulação de eventos de front-end, personalização de back-end e testes de unidade.
Solução 1: usando JavaScript `window.open` para criar uma janela pop-up
Essa abordagem usa JavaScript para substituir o comportamento padrão de abrir um link em uma nova guia por uma janela pop-up, o que é ideal para soluções front-end dinâmicas criadas com SPFx em um contexto do SharePoint.
<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>
Solução 2: adicionar JavaScript embutido diretamente na tag do link
Este método incorpora JavaScript embutido na tag de link HTML, tornando-o ideal para um sistema front-end dinâmico e leve que possui poucas dependências externas.
<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.
Solução 3: abordagem de back-end usando SPFx com injeção de JavaScript
Essa abordagem usa a Estrutura do SharePoint (SPFx) para injetar JavaScript em um WebPart personalizado, permitindo que links sejam abertos em uma janela pop-up usando métodos 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');
}
Teste de unidade para comportamento de pop-up JavaScript
Os testes de unidade podem garantir que a funcionalidade pop-up seja consistente em navegadores e ambientes. Aqui está um teste básico do Jasmine para validação de front-end.
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));
});
});
Explorando manipulação de eventos e injeção dinâmica de JavaScript no SPFx
Ao trabalhar com PnP Modern Search WebPart (SPFx), um recurso útil para desenvolvedores é a capacidade de ajustar dinamicamente como os elementos, como links, se comportam. O uso da manipulação de eventos JavaScript oferece uma infinidade de opções para personalizar as interações do usuário. Usar ouvintes de eventos para capturar e controlar cliques em links cria uma experiência mais interativa. Ao capturar eventos de clique, podemos substituir o comportamento normal e abrir URLs em uma janela pop-up controlada. Isso garante uma transição suave sem perturbar a guia ou janela atual do usuário.
A personalização de links em WebParts SPFx também requer a inserção dinâmica de código JavaScript. A Estrutura do SharePoint (SPFx) fornece métodos como e por conseguir isso. Ao inserir JavaScript personalizado, os desenvolvedores podem alterar o comportamento dos itens dos resultados da pesquisa sem precisar fazer modificações significativas na própria WebPart. Essa flexibilidade facilita a realização de ajustes globais em todos os links de resultados de pesquisa, garantindo que o comportamento desejado – como abrir uma janela pop-up – seja uniforme em toda a plataforma.
Finalmente, o desempenho e a experiência do usuário são fatores críticos em qualquer sistema baseado na Web, e o mesmo se aplica aqui. Ao otimizar o uso de JavaScript e limitar atividades que consomem muitos recursos, podemos garantir que essas personalizações não tenham influência significativa nos tempos de carregamento ou na capacidade de resposta da página. O uso eficiente de JavaScript, combinado com modificações de back-end do SPFx, fornece um alto nível de flexibilidade sem sacrificar o desempenho, resultando em uma experiência de usuário perfeita em toda a plataforma SharePoint.
- Como abro um link em uma janela pop-up com JavaScript?
- Você pode usar o função em JavaScript. Esta função permite abrir uma nova janela do navegador ou pop-up com propriedades específicas, como tamanho e barras de rolagem.
- O que faz fazer?
- O O método impede que um evento execute sua ação padrão. Nesse caso, evita que o link abra em uma nova aba, ao mesmo tempo que permite ações específicas, como a exibição de um pop-up.
- Como aplico comportamento personalizado a vários links no SPFx?
- Usando em JavaScript, você pode escolher vários componentes e anexar ouvintes de eventos a eles, garantindo que todos sigam o mesmo comportamento.
- Como substituo a renderização padrão de WebParts SPFx?
- Para ajustar o comportamento de WebParts SPFx, use o decorador. Isso permite injetar JavaScript personalizado diretamente no processo de renderização da WebPart.
- Qual é a melhor técnica para determinar se uma janela pop-up abre corretamente?
- Usando testes unitários em um framework como Jasmine, você pode usar para monitorar se o a função é chamada apropriadamente com os parâmetros previstos.
A forma como os links são abertos em uma janela pop-up pode ser personalizada usando JavaScript no PnP Modern Search WebPart (SPFx). Essa mudança melhora a interação do usuário, mantendo-o engajado na guia atual e, ao mesmo tempo, fornecendo acesso ao conteúdo detalhado em um pop-up controlado.
Para manter um comportamento consistente, use técnicas como e injetar JavaScript dinamicamente em WebParts SPFx. Além disso, os testes unitários ajudam a garantir que essas alterações funcionem bem em muitos contextos, resultando em uma solução confiável e fácil de usar para personalização de resultados de pesquisa do SharePoint.
- As informações sobre o PnP Modern Search WebPart (SPFx) e a personalização do comportamento do link foram obtidas na documentação oficial. Para mais detalhes, visite o Repositório GitHub de pesquisa moderna PnP .
- Orientação sobre o uso de métodos JavaScript, como e ouvintes de eventos foram referenciados no Documentos da Web do MDN para JavaScript.
- Detalhes sobre personalizações do SharePoint Framework (SPFx), incluindo injeção de JavaScript e , pode ser encontrado no Visão geral da estrutura do SharePoint .