Я использую Ripple, как описано в этой статье (http://www.raymondcamden.com/2013/11/05/Ripple-is-Reborn/), и до 1 февраля 2016 года он работал очень хорошо.
Я работаю на: Windows 8, Chrome: версия 48.0.2564.97 m, Ripple 0.9.32, Cordova 4.0.0 (которая поддерживает Cordova Android 3.6.4).
В моем проекте было установлено несколько плагинов, в том числе Media (apache.org.cordova.media). До начала этой недели он работал просто отлично, и вдруг я получил "Ой, Snap!" сообщение о сбое страницы, когда я загружал свой проект через Ripple и Chrome (https://support.google.com/chrome/answer/95669?hl=en), советы службы поддержки Google не помогли.
Чтобы выяснить, почему он внезапно не заработал, я создал проект Cordova «HelloWorld» с помощью CLI: «cordova create hello com.example.hello HelloWorld».
Я запустил его в Ripple/Chrome, и это сработало (без сообщения «Ой, Snap!»).
Затем я попытался добавить к нему обычные плагины Cordova, например: «плагин Cordova add org.apache.cordova.file» и т. д.
В ходе тестов я заметил, что Ripple/Chrome будет работать правильно, за исключением случаев, когда включен плагин org.apache.cordova.media. И именно в этом случае "Ой, Snap!" сообщение будет доставлено Chrome.
Затем я сосредотачиваюсь на анализе того, почему этот плагин может быть источником проблем. Я пришел к следующему выводу: Функция/объект Cordova JavaScript "MediaError", переносимый "MediaError.js", конфликтует с другой функцией MediaError, которую можно использовать в JavaScript в Chrome.
Поэтому я нашел обходной путь - к сожалению, неуклюжее решение. В разделе «[cordova_project_name]\platforms\android\assets\www» я отредактировал файл «cordova_plugin.js» и добавил в комментарий блок, касающийся MediaError:
/*{
"file": "plugins/org.apache.cordova.media/www/MediaError.js",
"id": "org.apache.cordova.media.MediaError",
"clobbers": [
"window.MediaError"
]
},*/
И, наконец, больше никаких "Ой, Снап!" сообщение от Ripple/Chrome, но больше нет функции Cordova MediaError. Если бы кто-нибудь мог помочь мне обмануть Chrome и сказать мне, как я могу позволить всем функциям JavaScript Cordova переопределять любые другие функции JavaScript с похожими именами (и затем обходить сообщение «Ой, Snap!»)?