Выход из двойных кавычек в обработчике событий JavaScript onClick

Доверие ко всем сертификатам не было для меня реальной альтернативой, поэтому я сделал следующее, чтобы HttpsURLConnection доверял новому сертификату (см. Также http://nelenkov.blogspot.jp/2011/12/using-custom- сертификат-траст-магазин-on.html ).

  1. Получить сертификат; Я сделал это, экспортировав сертификат в Firefox (нажмите на маленький значок замка, получите информацию о сертификате, нажмите экспорт), затем использовали portecle для экспорта склада доверенных сертификатов (BKS).

  2. Загрузите 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());
    

60
задан user133046 4 July 2009 в 05:22
поделиться

5 ответов

Вы пробовали

" или \ x22

вместо

\"

?

84
ответ дан 24 November 2019 в 17:36
поделиться

Хотя я согласен с CMS в том, чтобы делать это ненавязчиво (через библиотеку, такую ​​как jquery или dojo), вот что также работает:

<script type="text/javascript">
function parse(a, b, c) {
    alert(c);
  }

</script>

<a href="#x" onclick="parse('#', false, 'xyc&quot;foo');return false;">Test</a>

Причина, по которой он блокируется, не из-за JavaScript, это из-за парсера HTML. У него нет концепции экранированных кавычек, он тащится в поисках конечной цитаты, находит ее и возвращает как функцию onclick. Это недопустимый javascript, поэтому вы не узнаете об ошибке, пока JavaScript не попытается выполнить функцию.

6
ответ дан 24 November 2019 в 17:36
поделиться

Он должен экранировать HTML, а не Javascript. Измените \ " на »

53
ответ дан 24 November 2019 в 17:36
поделиться

Вы также можете попробовать две обратные косые черты (\\ ") , чтобы избежать escape-символа.

5
ответ дан 24 November 2019 в 17:36
поделиться

Я думаю, что лучший подход - ненавязчиво назначить обработчик 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>
1
ответ дан 24 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: