Я разрабатываю мобильное приложение для Android/IOS/Windows 8 в Кордове, которому нужно передать несколько строк на веб-страницу. К сожалению для меня, веб-страница не поддерживает протокол TLS 1.0, что означает, что более старые версии Android (и версии IOS) не могут открывать страницу в родном браузере.
Это означает, что вызов window.open, если для него задано значение «_blank», не будет загружать страницу в любой версии Android до 16 API, и это действительно гарантируется только для 19 API и выше:
window.open('https://www.libertymountain.com/login.aspx','_blank')
Мое решение состояло в том, чтобы изменить его на «_system» вместо «_blank». Это работает, потому что телефон может использовать браузер Chrome или Safari вместо родного браузера. Однако, когда я это делаю, все обратные вызовы перестают работать. Он просто открывает страницу, и я не могу запустить на ней скрипт.
Например, приведенный ниже код никогда не выполняет обратный вызов. Он просто открывает веб-страницу:
var ref = window.open('https://www.libertymountain.com/login.aspx','_system');
ref.addEventListener('loadstart', function() { alert("Hello"); });
Я что-то упустил, или есть правильный способ сделать это?
РЕДАКТИРОВАТЬ: Просто чтобы было ясно, это мой код, который никогда не вызывает обратный вызов:
document.addEventListener("deviceready", init, false);
function init() {
window.open = cordova.InAppBrowser.open;
var ref = window.open('https://www.libertymountain.com/login.aspx', '_system');
// This event never triggers, nor does any other event, even though the
// webpage is opened in Chrome
websiteReference.addEventListener('loadstart', function(event) { console.log('Hello'); });
}
Если я изменю его на это, события сработают. Но мне нужно сделать это с помощью «_system», иначе старые устройства Android и IOS не смогут этого сделать.
document.addEventListener("deviceready", init, false);
function init() {
window.open = cordova.InAppBrowser.open;
// Change '_system' to '_blank'
var ref = window.open('https://www.libertymountain.com/login.aspx', '_blank');
// This event never triggers, nor does any other event, even though the
// webpage is opened in Chrome
websiteReference.addEventListener('loadstart', function(event) { console.log('Hello'); });
}