A análise de URLs no lado do cliente tem sido uma prática comum há duas décadas. Os primeiros dias incluíam o uso de expressões regulares ilegíveis, mas a especificação do JavaScript acabou evoluindo para um new URL método de análise de URLs. Embora URL é incrivelmente útil quando um URL válido é fornecido, uma string inválida gera um erro – eca! Um novo método, URL.canParse, estará disponível em breve para validar URLs!

O fornecimento de um URL malformado ao new URL gerará um erro, portanto, todo uso de new URL precisaria estar dentro de um try/catch bloco:

// The correct, safest way
try {
  const url = new URL('https://davidwalsh.name/pornhub-interview');
} catch (e) {
  console.log("Bad URL provided!");
}

// Oops, these are problematic (mostly relative URLs)
new URL('/');
new URL('../');
new URL('/pornhub-interview');
new URL('?q=search+term');
new URL('davidwalsh.name');

// Also works
new URL('javascript:;');

Como o senhor pode ver, as cadeias de caracteres que funcionariam corretamente com um <a> às vezes não funcionam com a tag new URL. Com URL.canParse, o senhor pode evitar o try/catch para determinar a validade do URL:

// Detect problematic URLs
URL.canParse('/'); // false
URL.canParse('/pornhub-interview'); // false
URL.canParse('davidwalsh.name'); //false

// Proper usage
if (URL.canParse('https://davidwalsh.name/pornhub-interview')) {
  const parsed = new URL('https://davidwalsh.name/pornhub-interview');
}

Percorremos um longo caminho desde os regexes crípticos e o queimador <a> para este URL e URL.canParse APIs. Atualmente, os URLs representam muito mais do que a localização, portanto, ter uma API confiável ajudou muito os desenvolvedores da Web!

  • 39 Shirts & Deixando a Mozilla

    Em 2001, eu tinha acabado de me formar em uma escola de ensino médio de uma cidade pequena e estava indo para uma faculdade de uma cidade pequena. Encontrei-me no pitoresco laboratório de informática, onde os computadores de baixa qualidade apresentavam dois navegadores: Internet Explorer e Mozilla. Foi nesse laboratório que me apaixonei…

  • 5 APIs HTML5 que o senhor não sabia que existiam

    Quando se diz ou se lê “HTML5”, é de se esperar que dançarinas exóticas e unicórnios entrem na sala ao som de “I’m Sexy and I Know It”. Mas o senhor pode nos culpar? Assistimos à estagnação das APIs fundamentais por tanto tempo que um recurso básico…

  • Sombras de caixa CSS entre navegadores

    As sombras de caixa são usadas na Web há um bom tempo, mas não foram criadas com CSS: era necessário utilizar algum jogo do Photoshop para criá-las. Para alguém sem nenhum talento em design, ou seja, eu, a necessidade de usar o Photoshop era péssima. Só porque…

  • QuickBoxes para Dojo

    É importante para mim aumentar meu portfólio mental. Primeiro veio o MooTools, depois o jQuery e agora o Dojo. Converso frequentemente com Peter Higgins, famoso pelo Dojo, e decidi que era hora de entrar em seu mundo. Escolhi um plug-in simples, mas útil…