Доверие ко всем сертификатам не было для меня реальной альтернативой, поэтому я сделал следующее, чтобы HttpsURLConnection доверял новому сертификату (см. Также http://nelenkov.blogspot.jp/2011/12/using-custom- сертификат-траст-магазин-on.html ).
Получить сертификат; Я сделал это, экспортировав сертификат в Firefox (нажмите на маленький значок замка, получите информацию о сертификате, нажмите экспорт), затем использовали portecle для экспорта склада доверенных сертификатов (BKS).
Загрузите Truststore из /res/raw/geotrust_cert.bks со следующим кодом:
final KeyStore trustStore = KeyStore.getInstance("BKS");
final InputStream in = context.getResources().openRawResource(
R.raw.geotrust_cert);
trustStore.load(in, null);
final TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
final SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(null, tmf.getTrustManagers(),
new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslCtx
.getSocketFactory());
Хотя я согласен с CMS в том, чтобы делать это ненавязчиво (через библиотеку, такую как jquery или dojo), вот что также работает:
<script type="text/javascript">
function parse(a, b, c) {
alert(c);
}
</script>
<a href="#x" onclick="parse('#', false, 'xyc"foo');return false;">Test</a>
Причина, по которой он блокируется, не из-за JavaScript, это из-за парсера HTML. У него нет концепции экранированных кавычек, он тащится в поисках конечной цитаты, находит ее и возвращает как функцию onclick. Это недопустимый javascript, поэтому вы не узнаете об ошибке, пока JavaScript не попытается выполнить функцию.
Он должен экранировать HTML, а не Javascript. Измените \ "
на »
Вы также можете попробовать две обратные косые черты (\\ ")
, чтобы избежать escape-символа.
Я думаю, что лучший подход - ненавязчиво назначить обработчик onclick .
Примерно так:
window.onload = function(){
var myLink = document.getElementsById('myLinkId');
myLink.onclick = function(){
parse('#', false, '<a href="xyz');
return false;
}
}
//...
<a href="#" id="myLink">Test</a>