I pode forçar todos os links em um WebView (ou WebFrame) a ser tratados como caminhos absolutos?
-
16-09-2019 - |
Pergunta
Então, eu estou trabalhando com o WebKit do - WebView e WebFrame. Eu uso um NSURLProtocol personalizado para recuperar o HTML para cada solicitação a partir de um banco de dados. O problema decorre do fato de que os links no HTML são todos relativos, quando eles realmente deve ser absoluta. Por exemplo, a página
foo/bar.html
Pode ter um link em que pontos a
foo/baz.html
O problema é que desde que o link é relativo, as extremidades solicitar até estar para
/foo/foo/baz.html
Até agora, eu tentei Para contornar isso comparando as duas URLs e tirando o prefixo comum - neste caso 'foo /' - deixando-me com foo / baz.html. Isso não funciona para todas as possibilidades, no entanto, especialmente quando há vários diretórios no caminho. Eu faço isso no "didStartProvisionalLoadForFrame:" método de frameLoadDelegate do meu WebView
.Infelizmente, eu não tenho controle sobre o HTML que eu estou exibindo, assim modificando as ligações em si não é uma opção.
Solução
Tente ser delegado a carga de recursos principal do quadro, e implementar webView:resource:willSendRequest:redirectResponse:fromDataSource:
para modificar a URL que está sendo solicitado. Enviar relativeString
a URL da solicitação para obter o URL relativo original, em seguida, usar -[NSURL initWithString:baseURL:]
para criar uma nova URL com a mesma seqüência relativa contra a URL base correta.