Greasemonkey: xmlHttpRequest.open não aceita mais o caminho sem protocolo e host

Criado em 14 dez. 2017  ·  9Comentários  ·  Fonte: greasemonkey/greasemonkey

Notei em jesus2099 / konami-command # 372 que o Firefox v57 + Greasemonkey v4 só funcionaria com o URL completo https?://host.tld/pathname e não funcionaria mais com apenas /pathname .
Firefox v57 + outro motor GM não é afetado por esta regressão, é por isso que abro um tíquete aqui.

Todos 9 comentários

Em minha solução alternativa , tive que acrescentar self.location.protocol + "//" + self.location.host + na frente do meu URL.

A execução de solicitações de um contexto de script de conteúdo (em que os scripts de usuário são executados) deve usar urls completas.

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatabilities#Content_script_requests_happen_in_the_context_of_extension_not_content_page

Se não quiser usar urls completos, você pode usar os métodos em window.wrappedJSObject e exportar quaisquer funções que sejam necessárias para executar (onreadystatechange, etc) usando exportFunction() . Minha sugestão é usar urls completas.

Muito obrigado por sua ajuda.
OK, então você quer dizer que está de acordo com as especificações do sistema WebExtensions, certo?
Não conheço esse negócio de WebExtensions, mas parece ser um padrão ...?
Não me lembro de ter lido nada sobre essa regressão em particular no GM v4 para postagens de blog de
Tem certeza que essa regressão é permanente?

Tem certeza que essa regressão é permanente?

Pode ser. Eu realmente não sei. Talvez no futuro <strong i="7">@grant</strong> none não tenha esses problemas, se uma sandbox adequada puder ser criada. Mas se algumas APIs privilegiadas forem necessárias, essas etapas podem ser necessárias. A bola está realmente nas mãos de Mozilla.

FTR meu script é um script <strong i="5">@grant</strong> none .
Deixo que os líderes do projeto fechem ou não fechem este tíquete.
Eu vou me adaptar.

Isso não foi intencional, então não se deve esperar que seja permanente. Poderíamos resolver totalmente caminhos não absolutos com base no documento como raiz.

Observe que o URL base correto é: document.baseURI (relacionado a <base href="..."> )

Posso confirmar, jQuery AJAX não funciona apenas com URL de caminho.
Firefox 57, Greasemonkey mais recente.

$.ajax({
  url: '/some/path',
  success: () => {}
});

Meu AJAX funciona com o Firefox antigo (pré-WebExtensions)

A correção acima foi empacotada em uma nova versão beta:
https://addons.mozilla.org/firefox/downloads/file/830369/greasemonkey-4.2beta1-an+fx.xpi?src=devhub

O teste e a confirmação seriam apreciados!

Esta página foi útil?
0 / 5 - 0 avaliações