0

我正在使用 jQuerymobile 开发一个 phonegap/cordova 2.9 iOS 应用程序,其中一些链接需要使用 InAppBrowser 打开一个 url。我还集成了 Google Admob。导航是带有一些不同 html 页面的基本单页模板。

当应用程序加载时,如果我不去应用程序的其他部分,当按下带有应用内浏览器 URLS 的按钮时,应用内浏览器就会打开。但是,如果我转到应用程序的其他部分并再次转到 index.html,则应用程序内浏览器会失败并且无法正常工作。

应用程序的不同部分与 target="_blank" 链接。如果我链接没有 target="_blank" 的部分,一切正常,但我需要使用 target="_blank" 返回 index.html 并重新加载 XML 数据。

几天前我正在寻找任何解决方案,但我没有找到任何东西。这篇文章中只有一个类似的详细信息,但没有解决方案:http: //iphonedevsdk.com/forum/iphone-sdk-development/115057-inappbrowser-is-not-opening.html

我尝试过的另一件事是从https://build.phonegap.com/plugins/2安装 Childbrowser 插件并使用它而不是应用内浏览器,但我无法让它工作。

有谁能够帮我?。非常感谢。

4

1 回答 1

0

您可能已经从这里开始了,但我的情况是我正在使用带有 jquery mobile 的 Cordova 2.9.1。在用户体验的某些方面,我还会返回 index.html。这工作正常,除非我在任何时候打开 InAppBrowser。InAppBrowser 可以工作,但是下次我重新刷新 index.html 时,包括 InAppBrowser 在内的所有插件都不会执行。

我的解决方法是对 CDVInAppBrowser.m 进行如下更改:

代替:

BOOL isPDF = [@"true" isEqualToString :[theWebView stringByEvaluatingJavaScriptFromString:@"document.body==null"]];
if (isPDF) {
    [CDVUserAgentUtil setUserAgent:_prevUserAgent lockToken:_userAgentLockToken];
}

[self.navigationDelegate webViewDidFinishLoad:theWebView];

我取出了 isPDF 逻辑,只是确保它总是更新到以前的 UserAgent。我只剩下..

[CDVUserAgentUtil setUserAgent:_prevUserAgent lockToken:_userAgentLockToken];

[self.navigationDelegate webViewDidFinishLoad:theWebView];

希望这可以帮助那些在再次重新加载cordova.js 时遇到类似InAppBrowser 破坏jquery-mobile 或类似框架的场景的人。

于 2014-01-31T10:45:32.700 回答