gpt4 book ai didi

ios - Cordova 2.2 + ChildBrowser 3.0.4 + iOS == 失败

转载 作者:行者123 更新时间:2023-11-28 20:27:33 25 4
gpt4 key购买 nike

我只是想在我的 PhoneGap 应用程序中设置一个功能,以在外部浏览器中打开某些链接。该代码似乎在 Android 上运行良好(我没有在 Windows Phone 上测试,因为插件信息声称支持不存在,但是......),但每次我尝试让它在 iPhone 上运行模拟器(iOS 5.1),它爆炸并出现以下错误:

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 应用程序,而不是升级或更新,我现在正在使用测试应用程序进行尝试,以排除我自己的应用程序中的不稳定因素):

<?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 文件中,我已经包含了(我意识到这几乎是不言而喻的。我也意识到很多问题是由那些不考虑首先尝试所有显而易见的东西的人发布的! ):

    <script type="text/javascript" src="cordova-2.2.0.js"></script>
<script type="text/javascript" src="childbrowser.js"></script>

我的 js 调用如下所示:

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 下载的包中的所有文件

我已经从我的 ~/Library/Application Support 中清除了缓存我已经在该项目上尝试过 Clean。

有什么想法吗?我正准备开始寻找一只好的山羊或鸡来快速献祭给“一次编写,到处运行”的神灵(我相当确定他们是骗子洛基的后代)!

最佳答案

好的,有几件事。一,个人“DERP!”但其余的我认为只是糟糕的文档和奇怪的实现。

在首页 ( https://github.com/alunny/ChildBrowser ) 上,文档中有关于 .openExternal() 的注释那说这是仅限Android的。这是我的“笨蛋!”

(我还没有找出为什么有一个 onOpenExternal 的钩子(Hook),据说它只适用于 iOS...)

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

<key>ChildBrowser</key>
<string>ChildBrowserCommand</string>
<key>ChildBrowserCommand</key>
<string>ChildBrowserCommand</string>

这个问题的要点:

  • target="_blank"适用于 <a> iPhone 上的标签。
  • 确保将 ChildBrowser(字符串)ChildBrowserCommand 项放入插件列表,不是childbrowser.js!
  • .openExternal() 确实 NOT 对 iPhone 起作用(此时),但是 .showWebPage() 起作用(或者,如果您想在 iPhone 上使用 openExternal() 功能,我想您可以在 anchor 标签上设置 target="_blank",并且只为不支持它的平台(如 Android)设置 preventDefault()。

关于ios - Cordova 2.2 + ChildBrowser 3.0.4 + iOS == 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13463030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com