2012-01-23 135 views
1

我有一个PhoneGap的HTML5文件如下(只显示头部的一部分),如何处理多个JavaScript文件

<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> 

有它定义像上面那样工作正常。问题是我不想在我的html文档中定义javascript。我希望它看起来像这样,

<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 
+0

你确定JS文件存在于Javascript文件夹中吗?这听起来像文件只是没有被加载,如果你已经定义了那里的功能。 – SoWeLie

+0

你的photo.js加载了吗?用控制台检查它。你能用控制台运行命令吗? – buschtoens

+0

无法使用控制台运行该命令,因此看起来不像它正在加载。但为什么不呢?该文件绝对存在。 – peter

回答

1

OK ,所以我在那里遇到的主要问题是我的photo.js文件中有一个错误。修复错误让我到了一个工作的地方。

我认为这个问题还有更多,但这就是为什么我在这里问一个问题。之前当我有内联脚本时,它也不起作用,这让我认为那里的脚本无法调用phonegap.cs中的代码。

原来,它不起作用在我的电脑上的浏览器,但在一个实际的android和它在工作的android模拟器。

+1

由于摄像机所需的本地代码未加载,因此它在桌面浏览器上无法使用。 PhoneGap将JavaScript方法映射到Android,iOS,BB,WP7等上的本机代码。 –

+0

我遇到同样的问题。你能更多地提高你的解决方法吗? – LivingThing

0

检查它:这是您file.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>