Preciso extrair o conteúdo da tag title de uma página HTML exibida em um UIWebView. Qual é o meio mais robusto de fazer isso?
Eu sei que posso fazer:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
}
No entanto, isso só funciona se o javascript estiver ativado.
Como alternativa, eu poderia apenas digitalizar o texto do código HTML para obter o título, mas isso parece um pouco complicado e pode ser frágil se os autores da página ficarem esquisitos com o código. Se for esse o caso, qual é o melhor método para processar o texto html na API do iPhone?
Sinto que esqueci algo óbvio. Existe um método melhor do que essas duas opções?
Atualizar:
Após a resposta a esta pergunta: UIWebView: você pode desativar o Javascript? parece não haver maneira de desativar o Javascript no UIWebView. Portanto, o método Javascript acima sempre funcionará.
fonte
Respostas:
Para aqueles que simplesmente rolam para baixo para encontrar a resposta:
Isso sempre funcionará, pois não há como desativar o Javascript no UIWebView.
fonte
WKWebView
tem propriedade 'title', faça assim,Eu não acho que
UIWebView
seja adequado agora.fonte
Se o Javascript estiver ativado, use este: -
Se o Javascript estiver desativado, use este: -
Usei +7 e -7 no NSMakeRange para eliminar o comprimento de
<title>
7fonte
Edit: só vi você descobriu a resposta ... sheeeiiitttt
Eu literalmente aprendi isso! Para fazer isso, você nem precisa exibi-lo no UIWebView. (Mas enquanto você o usa, é possível obter o URL da página atual)
De qualquer forma, aqui está o código e alguma explicação (fraca):
Então, temos o código HTML, agora como obtemos o título? Bem, em todo documento baseado em html, o título é sinalizado por Este é o título. Provavelmente, a coisa mais fácil a fazer é pesquisar essa string htmlCode por, e por, e substring-lo para que possamos colocar o material no meio.
E é isso mesmo! Então, basicamente, para explicar todas as travessuras do docTitle, se fizéssemos um intervalo dizendo NSMakeRange (startRange.location, endRange.location), obteríamos o título E o texto de startString (que é) porque o local é o primeiro caractere da sequência. Então, para compensar isso, adicionamos o comprimento da string
Agora, lembre-se de que esse código não foi testado. Se houver algum problema, pode haver um erro de ortografia ou que eu não adicionei um ponteiro quando não deveria.
Se o título é um pouco estranho e não está totalmente certo, tente mexer com o NSMakeRange - quero dizer como adicionar / subtrair diferentes comprimentos / locais das strings - qualquer coisa que pareça lógico.
Se você tiver alguma dúvida ou houver algum problema, não hesite em perguntar. Esta é a minha primeira resposta neste site, desculpe se é um pouco desorganizado
fonte
Aqui está a versão Swift 4, com base na resposta aqui
fonte
Até agora, eu não tenho experiência com visualizações na Web, mas acredito que define o título para o título da página, portanto, um truque que sugiro é usar uma categoria na visualização na Web e sobrescrever o configurador para self.title para adicionar uma mensagem a um de vocês se opõe ou modifica alguma propriedade para obter o título.
Você poderia tentar me dizer se funciona?
fonte
Se você precisar com frequência no seu código, sugiro que você adicione uma func na "extensão UIWebView" como esta
alternativamente, é melhor usar o WKWebView.
Infelizmente, não é bem suportado no ARKit. Eu tive que desistir do WKWebView. Não consegui carregar o site no webView. Se alguém tiver uma solução para esse problema aqui -> eu tenho um problema semelhante, isso ajudaria bastante.
fonte