2017-06-16 100 views
0

我在Phonegap開發方面是全新的,我正在嘗試一些看起來很簡單但不工作的東西。phonegap window.location = url不工作

我遵循了Phonegap「入門」指南,並在我的Android手機上安裝了「PhoneGap Developer」應用程序。我創建了一個應用程序,並與phonegap serve一起提供。我刪除默認js/index.js,並打電話給app.initialize(),並具有以下添加到它的位置index.html

<script> 
    function onDeviceReady() { 
     if (navigator.connection.type == Connection.NONE) { 
      navigator.notification.alert(
       'An internet connection is required to continue'); 
     } else { 
      navigator.notification.alert("HERE!"); 
      window.location = "https://google.com"; 
     } 
    } 
    document.addEventListener("deviceready", onDeviceReady, false); 
</script> 

如果我用它正確地加載一個Chrome瀏覽器訪問的應用程序,使彈出消息,然後加載了谷歌。如果我嘗試使用Android PhoneGap Developer應用程序,它會彈出消息,然後什麼也不做。

在config.xml我試圖設置一切,寬容地只是爲了得到它的工作:

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

在服務器控制檯我得到以下警告:

[phonegap] [console.warn] Content Security Policy has been modified to be: <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' gap: ws: https://ssl.gstatic.com;style-src 'self' 'unsafe-inline' data: blob:;media-src *;img-src * 'self' data: content:;script-src * 'unsafe-inline' 'unsafe-eval' data: blob:;"> 

我對CSP策略不夠熟悉,以確定該政策是否實際限制了加載「google.com」或不...

回答

2

Phonegap開發人員應用程序本身就是一個Phonegap應用程序,因此它使用它是自己的config.xml而不是使用你的。您可以在github repo上看到它沒有任何允許導航規則。所以它不允許導航到谷歌或任何其他網站。

你必須做的是運行自己的應用程序,而不是在Phonegap開發人員應用程序上「預覽」它。

這是命令來運行你的應用程序phonegap run android

此外,您可能需要與phonegap plugin add cordova-plugin-whitelist或添加<plugin name="cordova-plugin-whitelist" spec="~1.3.2" />你config.xml中安裝插件的白名單,爲的PhoneGap開發的應用程序自帶安裝了所有的核心插件,但是你的應用可能沒有在模板上取消它。

+0

任何想法爲什麼開發工具不允許所有的導航,以促進發展?對我來說這似乎很奇怪。 –

+0

我不知道,但在我看來,創建Cordova/Phonegap應用程序導航到Cordova webview中的外部網站是一種不好的做法。要導航到外部網站,您可以使用inAppBrowser插件。 – jcesarmobile

+0

我一般同意你的看法,但這是一個僅限於開發者的工具。 –