在PhoneGap默认的Webview中打开链接

3
我使用Crosswalk构建了一个PhoneGap应用程序,当我试图在其中打开链接时,
  • 它没有在同一个webview中打开,而是启动了一个浏览器选择窗口。
我想要的是,如果我点击href,它应该在加载默认index.html的webview内加载Web应用程序,我也尝试使用js重定向页面。
我不确定我是否正确地完成了集成,我只是遵循了这个链接Cordova插件

你应该发布你尝试过的代码 - 这样别人就可以解释为什么它不能按预期工作。 - Jim O'Brien
这是一个示例代码,我只添加了Crosswalk插件,然后在index.html中添加了一行,<a href="http://192.168.1.11/papa">加载Papa</a>。 - Bijoy
那仍然没有告诉任何试图回答问题的人该选哪个示例代码?哪个index.html文件? - Jim O'Brien
3个回答

3
你需要使用 inappbrowser 插件来实现这个功能:https://github.com/apache/cordova-plugin-inappbrowser 安装插件可以通过命令 cordova plugin add cordova-plugin-inappbrowser 进行,然后你就可以编写类似以下代码:
<span id="myLink">Load Pap</span>

<script>
    document.addEventListener("deviceready", onDeviceReady, false);

    function onDeviceReady()
    {
        var myLink = document.getElementById('myLink');

        myLink.addEventListener("click", function()
        {
            cordova.InAppBrowser.open('http://192.168.1.11/papa', '_self', 'location=no');
        })
    }
</script>

inAppBrowser会启动默认的Webview,而不是Crosswalk吗? - Bijoy
1
是的,它已经集成到您的应用程序中,您可以显示/隐藏许多内容(例如,location=no 隐藏地址栏)。 - Ivan Gabriele

2
伊万的答案是一个好的解决方案,但请记住,InAppBrowser会在您的应用程序上打开一个浏览器。例如,如果您需要打开外部网站、进行身份验证,然后回到您离开它的状态。
您看过这个SO响应吗? 在iOS上在PhoneGap或Cleaver(Cordova)中加载远程HTML 您也可以使用JS:
window.location.href = <your_remote_url>

你尝试过哪些 JavaScript?

1

如果您在使用Phonegap 6.3.1时遇到此问题,请确保已在项目根目录的config.xml文件中的<access>标签、<allow-intent>标签和allow-navigation标签中添加了要打开的URL白名单。

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.phonegap.helloworld" version="1.0.0"
        xmlns="http://www.w3.org/ns/widgets"
        xmlns:gap="http://phonegap.com/ns/1.0">

    ...

    <access origin="*" />
    <allow-intent href="*" />
    <allow-navigation href="*" />

    ...

</widget>

(注意:上述href中的“*”允许访问任何url/path。在生产环境中,您可能希望限制某些url/path)

然后在您的index.html文件中添加以下JavaScript代码:

<script type="text/javascript">
    document.addEventListener('deviceready', function() {
        var url = 'https://www.google.com' // change to whatever you want
        cordova.InAppBrowser.open(url, '_self', 'location=no');
    }, false)
</script>

这个脚本使用cordova-plugin-inappbrowser插件,如果你使用标准的Phonegap模板生成应用程序,则该插件应该已经包含在你的config.xml文件中。

该脚本等待设备就绪,然后使用cordova-plugin-inappbrowser插件打开给定的url。 '_self'参数表示在Phonegap webview中打开页面,'location=no'表示没有地址栏。有关其他参数选项,请参阅cordova-plugin-inappbrowser插件的文档(上面的链接)。

要在适当的模拟器中测试应用程序(假设你已安装Phonegap CLI),请运行以下命令:

phonegap run ios --verbose --stack-trace
phonegap run android --verbose --stack-trace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接