diff --git a/audiolink.cc b/audiolink.cc index 5f0a99a2..1e1b6838 100644 --- a/audiolink.cc +++ b/audiolink.cc @@ -14,9 +14,28 @@ std::string addAudioLink( std::string const & url, std::string makeAudioLinkScript( std::string const & url, std::string const & dictionaryId ) { + /// Convert "'" to "\'" - this char broke autoplay of audiolinks + + std::string ref; + bool escaped = false; + for( unsigned x = 0; x < url.size(); x++ ) + { + char ch = url[ x ]; + if( escaped ) + { + ref += ch; + escaped = false; + continue; + } + if( ch == '\'' ) + ref += '\\'; + ref += ch; + escaped = ( ch == '\\' ); + } + return std::string( "var gdAudioLink; " - "if ( !gdAudioLink ) gdAudioLink=" ) + url + + "if ( !gdAudioLink ) gdAudioLink=" ) + ref + "; if ( typeof gdActivateAudioLink_" + dictionaryId + " != 'function' ) {" "eval( 'function gdActivateAudioLink_" + dictionaryId + "() {" - "gdAudioLink=" + url + "; }' ); }"; + "gdAudioLink=" + ref + "; }' ); }"; }