Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下载网页并在连接可用时刷新_Javascript_Android_Html_Ios_Phonegap Build - Fatal编程技术网

Javascript 下载网页并在连接可用时刷新

Javascript 下载网页并在连接可用时刷新,javascript,android,html,ios,phonegap-build,Javascript,Android,Html,Ios,Phonegap Build,因此,我正在构建一个包含大量web内容的应用程序,我计划使用Phone Gap build发布它,但将在线托管所有内容并链接到它。我想知道是否有一种方法可以在有活动的internet连接供脱机使用时下载网页,以及当用户使用wifi连接时再次连接以刷新数据时(最好是在用户使用wifi连接时)。该网站将主要使用html、js和php。我将与bluehost一起主持 有没有办法做到这一点?提前谢谢!有点放荡 我不熟悉java,但我认为我可以提供完成工作的逻辑 你想做一个无限循环,检查用户是否在wifi

因此,我正在构建一个包含大量web内容的应用程序,我计划使用Phone Gap build发布它,但将在线托管所有内容并链接到它。我想知道是否有一种方法可以在有活动的internet连接供脱机使用时下载网页,以及当用户使用wifi连接时再次连接以刷新数据时(最好是在用户使用wifi连接时)。该网站将主要使用html、js和php。我将与bluehost一起主持


有没有办法做到这一点?提前谢谢!有点放荡

我不熟悉java,但我认为我可以提供完成工作的逻辑

你想做一个无限循环,检查用户是否在wifi上。如果为true,则使用wget、rsync或scp下载网站。像这样的事

while (true){
    // do an if statement that checks if user is on wifi. Then do a then statement that uses rsync or wget. 
}
有关如何在java中的while循环中嵌套if语句的信息:

我不知道wget、rsync或scp是否可以从java运行。您需要进一步研究它,或者编写自己的替代函数来实现它。比如:

function download_file() {
       var url = "http://www.example.com/file.doc"
       window.location = url;
     }
您应该能够通过java这样做:

String whatToRun = "/usr/local/bin/wget http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe";
资料来源: 1.
2.

首先创建一个连接筛选器类

public class Connection_Status{
    private static ConnectivityManager connectivityManager;
    static boolean connected = false;

    public static Boolean isOnline(Context ctx) {
        try {
            connectivityManager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            connected = networkInfo != null && networkInfo.isAvailable()&& networkInfo.isConnected();
            return connected;
        } catch (Exception e) {
            System.out.println("CheckConnectivity Exception: " + e.getMessage());
        }
        return connected;
    }
}
在你的主课上呢

    public class Main extends Activity{
       private WebView mWebView;

      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

       mWebView = (WebView) findViewById(R.id.webview);
       mWebView.getSettings().setJavaScriptEnabled(true);
       mWebView.getSettings().setBuiltInZoomControls(true);

if(Connection_Status.isOnline(Main.this)){

    HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
    HttpGet httpget = new HttpGet("http://yoururl.com"); // Set the action you want to do
    HttpResponse response = httpclient.execute(httpget); // Executeit
    HttpEntity entity = response.getEntity(); 
    InputStream is = entity.getContent(); // Create an InputStream with the response
    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) // Read line by line
        sb.append(line + "\n");

    String resString = sb.toString(); //

    is.close(); // Close the stream
             }
        }
   }
或者您可以在其上使用缓存,例如

       mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
       mWebView.getSettings().setAppCachePath(""+this.getCacheDir());
       mWebView.getSettings().setAppCacheEnabled(true); 
       mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
不要忘记添加以下权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- for the connection status-->

资料来源:

从商店下载PhoneGap应用程序时,会将其下载到设备上。它们基本上是index.html文件的包装器,但该应用程序实际上是用JavaScript编程的,JavaScript负责创建和显示视图等。您需要检查internet连接的唯一时间是在与后端(PHP)通信时。。。如果ajax请求失败,最好的解决方案是为用户提供一个按钮/链接,以便在用户恢复internet连接后重试,或者设置一个间歇触发的计时器以继续重试。。。永远不要在你的Phone Gap应用程序中使用
while(true)
循环-它会挂起。

这是Java和android为什么?因为我正在用jquery mobile用HTML构建整个东西,并用phonegap发布它,因此没有本机android kt ios程序,也没有Java脚本你不想做无限循环,尤其是在手机上。Phonegap在联机和脱机时会触发事件。谢谢。这是一个更好的解决方案。PS您将只在bluehost上托管PHP。JavaScript/HTML/CSS都是通过应用程序从商店下载的。