Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Erro no evento click [cordova]

Dentro da index.js crio dinamicamente o menu ao qual crio um link a com o evento onclick="app.sair()""

e criei a função sair dentro do escopo, ou seja:

receivedEvent: function (id) { ... }, sair : function(){ ... }

executo o app no meu iphone e ele roda normal, loga, monta o menu corretamente através do meu método porém quando clico no botão sair do menu a mensagem de erro no meu console é a seguinte:

Refused to execute a script for an inline event handler because 'unsafe-inline' appears in neither the script-src directive nor the default-src directive of the Content Security Policy.

meu cabeçalho da index.html é o seguinte:

O que pode estar errado?

E a meneira ao qual estou desenvolvendo esta correta? Pois os eventos para um APP são esses mesmos, click por exemplo?

5 respostas

Oi Nilton,

O Script está sendo bloqueado pois ele é um script inline(onclick="app.sair()").

Sua aplicação deve estar adicionando o cabeçalho Content Security Policy, que restringe a execução de Scripts inline.

Veja se você consegue alterar para que essa lógica seja feita via Javascript, ao inves de ser feita diretamente na tag.

Por exemplo, ao invés de:

<a href="#" onclick="funcaoSair()">Sair</a>

Você pode fazer assim:

<a href="#" class="btn-sair">Sair</a>

//no javascript:
var botaoSair = document.querySelector(".btn-sair");
botaoSair.onclick = funcaoSair;

Obs: usei HTML/JS puro apenas para exemplificar.

Veja se resolve.

Meu cabeçalho no html tem a seguinte diretiva:

<meta http-equiv="Content-Security-Policy" content="
        default-src *;
        script-src 'unsafe-inline';  
        connect-src *; 
        img-src *; 
        style-src * 'unsafe-inline';
        form-action *;">

Mas o meu ajax para disparar post, também não esta funcionando, pois diz que script-src não possui a diretiva unsafe-inline, porém esta no cabeçalho.

Oi Nilton,

Não apareceu a diretiva na mensagem.

Coloque os código entre três simbolos de crase:

```

seu codigo aqui

```

para aparecer aqui no forúm.

Acho que o problema esta contido porque eu carrego tudo dentro da index.js, para ser mais exato dentro da var app = { ... } separando as funções isso é correto?

Outra coisa os eventos click por exemplo é uma pratica para APP ?

solução!

Oi Nilton,

Pode ser assim, mas o problema é só se tiver muitas funções, pois pode ficar dificil de dar manutenção no código posteriormente.

O evento de click não tem problema, já o mouseover por exemplo não é boa prática utilizar.