首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cordova 2.2 + ChildBrowser 3.0.4 + iOS ==故障转移

Cordova 2.2 + ChildBrowser 3.0.4 + iOS ==故障转移
EN

Stack Overflow用户
提问于 2012-11-20 05:59:23
回答 2查看 2K关注 0票数 0

我只是想在我的PhoneGap应用程序中设置一个函数,以便在外部浏览器中打开某些链接。代码似乎在安卓上运行得很好(我没有在Windows Phone上测试,因为插件信息声称还没有支持...),但每次我试图让它在iPhone模拟器(iOS 5.1)中运行时,它都会失败,出现以下错误:

代码语言:javascript
复制
testCB[3332:c07] CDVPlugin class childbrowser.js (pluginName: ChildBrowser) does not exist.
testCB[3332:c07] ERROR: Plugin 'ChildBrowser' not found, or is not a CDVPlugin. Check your plugin mapping in Cordova.plist.
testCB[3332:c07] -[CDVCommandQueue executePending] [Line 102] FAILED pluginJSON = ["ChildBrowser1249404349","ChildBrowser","showWebPage",["http://www.apple.com",{"showLocationBar":true}]]

我已经看遍了所有的论坛和这里,我一直看到人们提到更新Cordova.plist文件。好的,这就是(注意,这是一个全新的Cordova应用程序,而不是升级或更新,我正在尝试测试应用程序,现在,以排除我自己的应用程序的可靠性):

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- the standard keys snipped -->
    <key>ExternalHosts</key>
    <array>
        <string>*</string>
    </array>
    <key>Plugins</key>
    <dict>
        <key>ChildBrowser</key>
        <string>childbrowser.js</string>
        <key>ChildBrowserCommand</key>
        <string>ChildBrowserCommand</string>
        <key>Device</key>
        <string>CDVDevice</string>
        <key>Logger</key>
        <string>CDVLogger</string>
        <key>Compass</key>
        <string>CDVLocation</string>
        <key>Accelerometer</key>
        <string>CDVAccelerometer</string>
        <key>Camera</key>
        <string>CDVCamera</string>
        <key>NetworkStatus</key>
        <string>CDVConnection</string>
        <key>Contacts</key>
        <string>CDVContacts</string>
        <key>Debug Console</key>
        <string>CDVDebugConsole</string>
        <key>Echo</key>
        <string>CDVEcho</string>
        <key>File</key>
        <string>CDVFile</string>
        <key>FileTransfer</key>
        <string>CDVFileTransfer</string>
        <key>Geolocation</key>
        <string>CDVLocation</string>
        <key>Notification</key>
        <string>CDVNotification</string>
        <key>Media</key>
        <string>CDVSound</string>
        <key>Capture</key>
        <string>CDVCapture</string>
        <key>SplashScreen</key>
        <string>CDVSplashScreen</string>
        <key>Battery</key>
        <string>CDVBattery</string>
        <key>Globalization</key>
        <string>CDVGlobalization</string>
    </dict>
</dict>
</plist>

(编辑)在我的index.html文件中,我已经包含了(我意识到这几乎是不言而喻的。我也意识到很多问题都是由那些没有考虑过先尝试所有显而易见的东西的人发布的!):

代码语言:javascript
复制
    <script type="text/javascript" src="cordova-2.2.0.js"></script>
    <script type="text/javascript" src="childbrowser.js"></script>

我的js调用如下所示:

代码语言:javascript
复制
onDeviceReady: function() {
    app.receivedEvent('deviceready');

    var link = document.getElementById('launchApple');
    console.log('derp?');

    if(link){
        //var cb = ChildBrowser.install();
        console.log("We're trying to add a click handler link");
        link.addEventListener('click', function() {
                              console.log('click');
                              window.plugins.childBrowser.openExternal('http://www.apple.com'); });
    }

},

当我点击这个链接时,我得到了上面的错误。

我已经尝试将ChildBrowser.js文件的大小写改为childbrowser.js。我尝试过在iPhone 6模拟器中运行它。我的插件文件夹包含从https://github.com/alunny/ChildBrowser下载的包中的所有文件

我已经从我的~/库/应用程序支持中清除了缓存,我已经在项目上尝试了Clean。

有什么想法吗?我要开始寻找一只好的山羊或鸡,用来快速地祭拜“写一次,到处跑”的神(我相当确定他们是魔术师洛基的后代)!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-21 00:52:02

好的,有几件事。一,个人的"DERP!“但剩下的我只归结于简陋的文档和奇怪的实现。

在首页( https://github.com/alunny/ChildBrowser )上,.openExternal()的文档中有一条注释,上面写着这是Android专用的。这是我的"derp!“

(然而,我还没有弄清楚为什么会有onOpenExternal的钩子,据说只有iOS才能使用…)

其次,丢弃所有告诉您添加childbrowser.js作为ChildBrowser Plugins项的字符串的文档。您的插件应该如下所示:

代码语言:javascript
复制
<key>ChildBrowser</key>
<string>ChildBrowserCommand</string>
<key>ChildBrowserCommand</key>
<string>ChildBrowserCommand</string>

从这个问题中得到的结论:

  • target="_blank“适用于childbrowser.js!
  • .openExternal()上的<a>标签。
  • 请确保您将ChildBrowser (string) ChildBrowserCommand项放入您的插件列表中,NOT work (此时)

iPhone,但.showWebPage()可以(或者,如果您想要openExternal()功能在iPhone上,我想您可以在锚标签上设置target="_blank”,并且只在不支持它的平台上设置preventDefault(),比如安卓)。

票数 3
EN

Stack Overflow用户

发布于 2012-11-20 06:04:37

cordova.js脚本之后,将childbrowser.js添加到HTML文件中,如下所示:

代码语言:javascript
复制
<script type="text/javascript" src="childbrowser.js"></script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13463030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档