следующий код из официального сайта phonegap. Это не работает.
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.addEventListener Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
ref.addEventListener('exit', function() { alert(event.type); });
}
</script>
</head>
<body>
</body>
</html>
После этого я сделал кнопку. при нажатии кнопки откройте браузер приложений.
function onDeviceReady() {
$('#btn').click(function(){
var ref = window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', function() { alert('start: ' + event.url); });
ref.addEventListener('loadstop', function() { alert('stop: ' + event.url); });
ref.addEventListener('exit', function() { alert(event.type); });
});
}
когда я нажимаю кнопку в первый раз, никаких предупреждений. Поэтому я нажимаю кнопку "Готово", чтобы закрыть браузер. Затем я нажимаю кнопку второй раз, предупреждения работают. Я повторно развертываю программу и повторяю ее. результаты одинаковы, предупреждения запускаются только во второй раз, когда я нажимаю кнопку. Может ли кто-нибудь сказать мне, почему?
Попробуйте это: возможно, потому, что вы объявляете функцию var ref внутри функции click
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.removeEventListener Example</title>
<script type="text/javascript" charset="utf-8" src="jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Global InAppBrowser reference
var ref= null;
function iabLoadStart(event) {
alert(event.type + ' - ' + event.url);
}
function iabLoadStop(event) {
alert(event.type + ' - ' + event.url);
}
function iabLoadError(event) {
alert(event.type + ' - ' + event.message);
}
function iabClose(event) {
alert(event.type);
ref.removeEventListener('loadstart', iabLoadStart);
ref.removeEventListener('loadstop', iabLoadStop);
ref.removeEventListener('loaderror', iabLoadError);
ref.removeEventListener('exit', iabClose);
}
// device APIs are available
//
function onDeviceReady() {
$('#btn').click(function(){
ref= window.open('http://apache.org', '_blank', 'location=yes');
ref.addEventListener('loadstart', iabLoadStart);
ref.addEventListener('loadstop', iabLoadStop);
ref.removeEventListener('loaderror', iabLoadError);
ref.addEventListener('exit', iabClose);
});
}
</script>
</head>
<body>
<button id='btn'>click me</button>
</body>
</html>