У меня есть файл HTML5 PhoneGap следующим образом (только показ части головы),
<head>
<script type="text/javascript" src="Javascript/phonegap-1.3.0.js"></script>
<!--<script type="text/javascript" src="Javascript/photo.js"></script>-->
<script>
function takePhoto()
{
alert("Take Photo");
navigator.camera.getPicture(onSuccess, onFail, {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA});
}
function onSuccess(imageData)
{
var image = document.getElementById('photoImg');
image.src = "data:image/jpeg;base64," + imageData;
}
function onFail(message)
{
alert('Failed because: ' + message);
}
</script>
</head>
В теле у меня есть эта разметка,
<button onclick='takePhoto()'>Take Photo</button>
Определив, как указано выше, отлично работает. Проблема в том, что я не хочу определять javascript в своем html-документе. Я хочу, чтобы это выглядело так,
<script type="text/javascript" src="Javascript/phonegap-1.3.0.js"></script>
<script type="text/javascript" src="Javascript/photo.js"></script>
И иметь photo.js метод takePhoto. Я не могу заставить его работать так. В моей консоли javascript я получаю ошибку,
Uncaught ReferenceError: takePhoto is not defined at file:///android_asset/www/index.html:81
Хорошо, поэтому основная проблема, с которой я столкнулся, заключалась в том, что в моем файле photo.js была ошибка. Исправление ошибки привело меня к тому месту, где он работал.
Я думал, что в этой проблеме есть больше, хотя именно поэтому я задал здесь вопрос. Раньше, когда у меня был встроенный скрипт, он тоже не работал, заставляя меня думать, что сценарий там не смог вызвать код в phonegap.cs.
Оказывается, он не работает в браузере на моем ПК, но на реальном Android и в симуляторе Android он работает.
Проверьте это: вот ваш файл.js ваш импорт
// I changed it for the purposes of not intersecting any other library.
(function() {
MyLibrary = {
takePhoto: function() {
// your code here
}
}
})()
Тогда ваш html-документ может сделать что-то вроде
<button onclick='MyLibrary.takePhoto()'>Take Photo</button>