【问题标题】:Open a link in its own phoneGap default webview在自己的phoneGap默认webview中打开链接
【发布时间】:2015-06-07 09:44:18
【问题描述】:

我已经构建了一个带有人行横道的 PhoneGap 应用程序,当我尝试打开其中的链接时,

  • 它没有在同一个 webview 中打开,除了它会启动一个 浏览器选择窗口。

我想要的是,如果我点击一个 href,它应该在加载默认 index.html 的 webview 中加载 webapp,我也尝试使用 js 重定向页面。

我不确定我是否正确完成了集成,我只是点击了这个链接 Codova Plugin

【问题讨论】:

  • 您应该发布您尝试过的代码 - 这样有人可以解释为什么它没有按预期工作
  • 这是一个示例代码,我只是添加了人行横道插件,然后在index.html中添加了一行,192.168.1.11/papa">LoadPapa
  • 这仍然没有告诉任何试图回答这个问题的人。哪个示例代码?哪个index.html 文件?

标签: cordova phonegap-plugins phonegap-build


【解决方案1】:

您需要使用 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 对吗?不是人行横道?
  • 是的,它已集成到您的应用中,您可以显示/隐藏许多内容(即 location=no 隐藏地址栏)。
【解决方案2】:

Ivan answer 是一个很好的解决方案,但请记住,InAppBrowser 在您的应用程序上打开浏览器,例如,如果您需要打开外部站点,进行身份验证,然后以您离开的状态返回您的应用程序。

你看到这个 SO 响应了吗? Loading remote html in PhoneGap or Cleaver (Cordova) on iOS

你也可以用JS:

window.location.href = <your_remote_url>

你试过什么JS?

【讨论】:

    【解决方案3】:

    对于那些在使用 Phonegap 6.3.1 时遇到此问题的人。

    确保您已在 config.xml 文件(位于项目的根目录)中的 &lt;access&gt; 标记、&lt;allow-intent&gt; 标记和 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>
    

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

    然后在您的 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 plugin 打开给定的 url。 '_self' 参数表示它在Phonegap webview 中打开页面,'location=no' 表示将没有地址栏。有关其他参数选项,请参阅 cordova-plugin-inappbrowser 插件的文档(上面的链接)。

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 2011-05-12
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      相关资源
      最近更新 更多