Estou tentando descobrir por que algo com Javascript não está funcionando dentro de um UIWebView. Que eu saiba, não há como definir um ponto de interrupção dentro do XCode para um arquivo js. Não tem problema, eu voltarei a 2004 e usarei o alerta statmen-- oh espere, eles também não parecem funcionar dentro de um UIWebView!
A única coisa em que pude pensar é exportando meus arquivos HTML e JS para a minha área de trabalho e apenas fazendo minha depuração dentro do Safari. E isso funciona! Mas é claro que o bug com o qual estou lutando no UIWebView não ocorre no Safari.
Existem outras maneiras de depurar dentro de um UIWebView ou algum truque que eu possa usar como usar o método de alerta da velha escola?
fonte
Settings
>Safari
>Advanced
>Web Inspector
<- activar estaEssa consulta é superior ao google, portanto vale a pena vincular ao remoteInspector escondido no iOS5 - de longe a melhor maneira encontrada até agora para depurar o UIWebViews - apenas compilação condicional antes de enviar para a Apple.
fonte
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
Lembre-se de remover a chamada ao criar para liberação!alert () certamente funciona para mim.
No entanto, você também pode fazer muitas outras coisas, como fazer seu próprio alerta DHTML que aparece em uma camada. Isso pode ser bom porque você pode fazer vários alertas para uma única div, sem interromper o aplicativo. Você também deve poder gravar um rastreamento de pilha (o rastreamento de pilha está no objeto de exceção e sempre pode lançar suas próprias exceções).
Como alternativa, se estiver executando no simulador, seu "alert ()" personalizado poderá chamar o objetivo C e exibir a sequência na janela do console do simulador do iPhone:
e no lado objetivo C:
Dito isso, eu tenho um aplicativo que é pesado no material UiWebView / javascript, e costumo fazer a maioria dos desenvolvedores javascript no Chrome (simulando o que é necessário no ambiente do iPhone)
fonte
Eu espero que isso ajude.
Etapa 1: Abra o Safari VC no seu Mac (hahaha Não faça a sua cara, se eu estiver dizendo no seu Macbook, siga estas etapas)
Passo 2: Vá às preferências do Safari e clique em Avançar. Você obterá essa configuração na tela do seu MacBook.
Agora ative o menu Mostrar para desenvolver na barra de menus. Agora o seu trabalho Tudo está concluído. Você está pensando que eu estou brincando: P: P nenhum homem ...
Etapa 3: execute seu aplicativo no dispositivo ou simulador. (Não pense apenas em executar) E entre no aplicativo em que está abrindo seu Webview ou SFSafariViewController. Até agora você não entendeu, eu sei. Seja legal e veja o meu próximo passo.
Etapa 4: Abra o Safari no seu MacBook e clique na opção Revelação na barra de menus. Você conseguiu algo que seu MacBook, iPad / iPhone está exibindo corretamente ?????
Passo 5: Feito. clique no seu dispositivo e clique no URL. Um novo pop-up será exibido como este.
Passo 6: o que você está procurando agora está aqui todas as etapas.
IMP: Não esqueça de ativar a imagem abaixo
fonte
Ainda não tentei isso, mas dê uma olhada neste Weinre
Parece muito promissor.
fonte
Esta é uma pergunta antiga. Mas ainda vou gostar de compartilhar meus dois centavos.
Estou usando o jsconsole.com para depuração remota. É fácil. Basta incluir uma tag de script e usar os logs do console para depurar imprimindo. Isso também pode ser usado para depuração em um dispositivo real.
fonte
Pergunta antiga, mas acho que encontrei a melhor solução, no meu caso, você precisa depurar o uiwebview, mas não tinha acesso ao aplicativo IOS e apenas ao conteúdo html e precisava visualizar alguns logs JS, adicionei o código a seguir para carregar o JS do firebug leve e mostrá-lo automaticamente:
chamando-o de JS
ou carregá-lo a partir de html
fonte
Você pode configurar um sistema como o usado no PhoneGap para enviar mensagens de JavaScript para Objective-C e fazer logon a partir daí. Em poucas palavras, eles estão definindo document.location com um esquema personalizado e bloqueando esse esquema no retorno de chamada do delegado.
Você pode aproveitar o fato de que um UIWebView é a maioria dos delegados para um WebView. O WebKit não é tecnicamente documentado para o iPhone, mas é basicamente o mesmo especificado nos cabeçalhos do WebKit da área de trabalho, possivelmente incluindo o WebScriptObject. Eu uso isso para depuração, mas certifique-se de remover esse código antes de enviar para a Apple.
Para obter um WebView de um UIWebView, implemente um método delegado como
-(void) webView:(id)inWebView didFinishLoadForFrame:(id)inWebFrame
em uma subclasse de UIWebView. Ligue super se você usar esse.fonte