【问题标题】:How to set a link to open in safari Phonegap Build 3.0.0如何设置在 safari Phonegap Build 3.0.0 中打开的链接
【发布时间】:2013-10-17 20:40:51
【问题描述】:

我正在使用 phonegap 构建并将我的版本设置为 3.0.0。我的页面上有我想在 iOS 上的 safari 中打开的链接。在我的配置文件中,我将访问源设置为“*”,因此它允许所有 url(这对于我的应用程序的其他部分是必需的)。我的配置文件中也有 inappbrowser 插件,因为有人告诉我这可能是必要的。

<access origin="*" /> 
<gap:plugin name="org.apache.cordova.core.inappbrowser" />

我目前正在使用以下代码来设置我的“a”标签:

$('#myATagID').on('click', function () {
            window.open(encodeURI('http://apache.org'), '_system', 'location=no');
        });

我已经尝试了许多不同的尝试来让这个网址在我的 iPhone 上的 safari 中打开,但是在 phonegap build 3.0.0 上都没有成功。虽然这段代码在 android 上运行。

【问题讨论】:

    标签: cordova phonegap-build


    【解决方案1】:

    请参阅位于here 的关于此主题的 SO 答案。完整的演练你应该会觉得相关。

    【讨论】:

    • 不再在 Phonegap 3 中工作。文档表明 window.open 与 InApp 浏览器完全绑定,并且从未提及突破 web 视图并进入新应用程序 (Safari)。
    【解决方案2】:

    您不应该只需要在系统浏览器中打开该插件。我使用以下 JavaScript 函数来执行相同的任务。

    JavaScript:

    // window.open wasn't opening a link in the system browser on iOS, so we have to use this function (requires phonegap.js)
    function redirectToSystemBrowser(url) {
        // Wait for Cordova to load
        document.addEventListener('deviceready', onDeviceReady, false);
        // Cordova is ready
        function onDeviceReady() {
            // open URL in default web browser
            var ref = window.open(encodeURI(url), '_system', 'location=yes');
        }
    }
    

    然后,我只需用 HTML 调用该函数。

    HTML:

    <head>
        <!-- required for the redirectToSystemBrowser() function -->
        <script src="phonegap.js"></script>
    </head>
    
    <body>
        <ul>
            <li onclick="redirectToSystemBrowser('http://www.domain.ext');">link to something</li>
        </ul>
    </body>
    

    另外,我没有指定任何 &lt;access&gt; 设置(我只是将它们全部注释掉)。

    【讨论】:

    • 哦,Dom 的回答是一个更完整、内容更丰富的答案(我对此表示赞同)。嘿嘿嘿……
    【解决方案3】:

    我认为您需要删除 encodeURI(),因为这可能会编码 // 并使 URI 格式错误。

    【讨论】:

    • encodeURI 不会编码 //。 See here.
    【解决方案4】:

    要在 Safari 中打开外部链接,您需要 In App Browser 插件

    https://github.com/apache/cordova-plugin-inappbrowser/blob/master/doc/index.md

    这个你叫 window.open(encodeURI("https://google.com"), "_system");

    “_blank”将在应用程序的模态浏览器中加载它。

    【讨论】:

      【解决方案5】:

      试试:

      window.open('http://google.com', '_system', 'location=no');
      

      很适合我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多