2012-04-25 4 views
0

Вот мой код:PhoneGap Build + Кордова + ChildBrowser Ошибка

<script src="include/cordova.js" type="text/javascript"></script> <script src="include/sencha-touch-all.js" type="text/javascript"></script> <script type="text/javascript" charset="utf-8" src="include/childbrowser.js"></script> <link href="include/sencha-touch.css" rel="stylesheet" type="text/css" />

var childBrowser = null; 
if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/)) { 
    document.addEventListener("deviceready", onDeviceReady, false); 
} else { 
onDeviceReady(); 
} 
function onDeviceReady(){ 
    console.log("PhoneGap is Ready"); 
    childBrowser = ChildBrowser.install(); 
} 
function openChildBrowser(url) 
{ 
     try { 
      //both of these should work... 
      var cb = new ChildBrowser(); 
      console.log(cb); 
      cb.showWebPage('http://www.google.com'); 
     } 
     catch (err) 
     { 
      alert(err); 
      console.log(err); 
     } 
} 

...

Существует некоторый код, который не имеет никакого отношения, но когда я называю openChildBrowser() я получаю следующая ошибка:

Uncaught TypeError: Object #<Object> has no method 'exec' Который я считаю ссылкой на childbrowser call exec на cordova объект.

Когда я смотрю на cordvoa объект я не вижу exec функцию в любом месте ...

Любые идеи?

ответ

0

Если вы используете скрипт async java, загрузите a.k.a Lazy Загрузка, возможно, вы получите эту ошибку.

В моем случае; Я использовал iframe в основном документе html. И в IFrame я загружаю и запускаю все рекламные скрипты async. После этого я начал получать Uncaught TypeError: Object # не имеет метода 'exec'.

Я не знаю КАК & ПОЧЕМУ, но я предполагаю, что этот тип использования приводит к неправильному пониманию веб-набора.

PS: Использование sencha или не используется, эта ошибка возникла. Так что это не связано с sencha-touch-all.

+0

Интересные мысли - хотя я этого не делаю, насколько мне известно. – sirmdawg

1

Это для iOS или Android? Этот код будет работать на обоих. Я обнаружил, что при использовании var cb = new ChildBrowser() могут быть ошибки. Я думаю, что чистая процедура, которую вызвал ChildBrowser, по порядку, но сейчас у меня нет времени. Этот метод будет работать. Promise :) ps - если вы делаете это для iOS, есть пример этой работы.

ChildBrowser.install(); 
window.plugins.childBrowser.showWebPage('http://www.google.com'); 
+0

Я использую android и хром для тестирования и получения ошибки на обоих. Сначала я использовал эту точную функцию и все еще получал ошибку - но попробую еще раз. – sirmdawg

+0

'Невозможно вызвать метод 'showWebPage' неопределенного' – sirmdawg

+0

попробуйте удалить childbrowser = childbrowser.install() и просто иметь ChildBrowser.install(). –

1

Насколько я знаю, ChildBrowser еще не полностью совместим с кордорой.

В любом случае, похоже, что cordova не заканчивает инициализацию, прежде чем пытаться связаться с плагином ChildBrowser.

Попробуйте подключить weinre или что-то еще и проверить, что вы можете открыть дочерний браузер вручную после полной инициализации кордовы. Убедитесь, что этот код находится после кордовы в порядке загрузки скрипта. Также убедитесь, что вы используете самые последние версии всего.

+0

Phonegap имеет официальное сообщение в блоге о поддержке childbrowser для сборки: \ – sirmdawg

0

Я боролся с ChildBrowser и Phonegap на iOS. Я заметил, что вы можете заставить ChildBrowser работать правильно, когда «установлен» после события deviceready. Это событие запускается только в том случае, если ваш html действителен и закончен.

Я обнаружил, что если вы ссылаетесь на изображение, которое на самом деле отсутствует, опечаток имени файла или изображения просто не существует, потому что парни дизайна еще не дали его (мой сценарий), deviceready просто не срабатывает. И в результате плагин не будет устанавливать (правильно).

Регистрация для события deviceready в событии onload - это путь и работает до тех пор, пока ваш html не будет хорош, и ничего не пропало.

Надеюсь, это поможет другим людям.

+0

Можете привести пример? Я попытался добавить 'onload =" startup() "' и в функцию 'startup()', включая my onDeviceReady() – sirmdawg

0

обновите телефонную связку/кордову до 1.7.0 и получите последний код childbrowser от github. он должен работать нормально.

+0

Можете ли вы связать меня с этими ресурсами? Я не могу заставить его работать. – sirmdawg

+0

https://github.com/phonegap/phonegap-plugins/tree/master/Android/ChildBrowser – Mahfuz

0

Вы не можете использовать плагин childbrowser для настольного браузера. Он работает только на устройстве или симуляторе, поэтому вы получаете эту ошибку.

Смежные вопросы