Bối cảnh
Tôi đang cố gắng nâng cấp ứng dụng iOS được xây dựng trên Cordova 2.0 lên phiên bản 2.7. Về cơ bản, đây là màn hình chào mừng trỏ tới công cụ tìm kiếm từ xa (vui lòng giữ lại nhận xét về hiệu lực của ứng dụng và có thể phê duyệt, khi chúng tôi đã qua) và chúng tôi đang sử dụng plugin ChildBrowser để bật liên kết mở trong trình duyệt phụ để không bẫy người dùng trong webview của Cordova.Tại sao Cordova 2.7.0 JS dường như không hoạt động trên các trang từ xa?
Cordova 2.7 có một tính năng được gọi là InAppBrowser Tôi hy vọng sẽ sử dụng thay cho ChildBrowser. InAppBrowser thực chất giống như vậy, ngoài việc thiếu một nút để mở trong Safari.
Vấn đề
trang web từ xa Ứng dụng hiện có bao gồm các Cordova JS (cũng như đối với các plugin ChildBrowser) và nó hoạt động tốt cho việc mở các liên kết trong trình duyệt phụ.
Ứng dụng Cordova 2.7 thử nghiệm của tôi dường như không tải chính xác Cordova JS khi nó được tải từ một trang web từ xa.
tôi đã cố gắng sử dụng HTML này chính xác tương tự trên trang bắt đầu nhúng và một trang bắt đầu từ xa:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://mydomain.com/mobile/cordova-2.7.0.js"></script>
</head>
<body>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
alert("Ready!!");
}
</script>
</body>
</html>
Để kiểm tra điều này là trang bắt đầu nhúng, tôi đặt dòng này trong config.xml
:
<content src="index.html" />
Khi tôi chạy ứng dụng, tôi nhanh chóng nhận được "Sẵn sàng!" cảnh báo.
Để kiểm tra điều này là trang bắt đầu từ xa (tôi nhằm liên kết vào trang từ xa trong ứng dụng cuối cùng, tôi chỉ sử dụng nó như là trang bắt đầu cho thử nghiệm. Kết quả là như nhau nếu tôi liên kết từ trang được nhúng.), tôi đặt dòng này trong config.xml
:
<content src="http://mydomain.com/mobile/index.php" />
Khi tôi chạy ứng dụng, tôi chỉ nhận được màn hình trống và không có cảnh báo.
Hơn nữa, trong cordova-2.7.0.js
L. 6255, tôi đã thay đổi
console.log('deviceready has not fired after 5 seconds.');
để
alert('deviceready has not fired after 5 seconds.');
Với sự thay đổi đó, chạy ứng dụng bằng cách sử dụng trang bắt đầu từ xa làm cho trang trắng, và sau đó sau khi lăm giây, tôi nhận được cảnh báo "deviceready đã không bắn sau 5 giây." Vì vậy, điều này cho tôi biết Cordova JS không khởi động chính xác. Không cần phải nói, tôi không thể có được InAppBrowser để khởi động các liên kết trong trình duyệt phụ trên trang web từ xa, nhưng tôi có thể làm cho nó hoạt động tốt trên trang bắt đầu được nhúng.
Bất kỳ ai có ý tưởng về nơi cần đi từ đây? Đây là một ví dụ khá đơn giản, vì vậy tôi giả định đây là vấn đề về cài đặt Cordova hoặc thay đổi chức năng. Tôi đánh giá cao bất kỳ suy nghĩ, cảm ơn!
Tôi vừa mới thử nghiệm với Cordova 2.6 và thiết lập chính xác với 2.6 hoạt động tốt. Cordova JS hoạt động trên các trang từ xa. Vì vậy, một cái gì đó thay đổi trong 2,7 để phá vỡ này. –
Điều này có vẻ liên quan nhưng với phiên bản trước, vì vậy nó rất lạ: https://issues.apache.org/jira/browse/CB-3029 –