HTML5 offline “Application Cache Error event: Manifest fetch failed (-1)”

后端 未结 6 670
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-31 04:36

I\'m trying to write an HTML5 offline application but can\'t seem to get Chrome to accept the cache manifest file.

Chrome logs the following output to its console wh

6条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-31 04:52

    To cache a website offline (HTML5) you need to specify all the files needed for it to run. In short specify the site main components needed.

    Easy way to create a manifest is in Note Pad.

    Note: CACHE MANIFEST needs to be first line and your files will follow after a line space as follows:

    CACHE MANIFEST
    
    Scripts/script.js
    Content/Site.css
    Scripts/jquery-ui-1.8.20.min.js
    Scripts/modernizr-2.5.3.js
    SESOL.png
    Scripts/jquery.formatCurrency-1.4.0.min.js
    http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css
    http://code.jquery.com/jquery-1.8.2.min.js
    http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js
    Content/themes/images/icons-18-white.png
    Controllers/AccountController
    Controllers/HomeController
    Models/AccountModels
    Account/Login
    Home/CheckOut
    

    Note2: remove all spaces after each line. Note:3 you need to follow the exact format FOLDER/File or FOLDER/FOLDER/FILE ect....

    Just because you have a manifest file doesnt mean it will load. you need to add the following to the Tag:

    
    

    Don't forget that after you add this it's cached the first time the page loads. So you need to register a cache event in the 'mobileinit' event.

    $(document).on("mobileinit", function () {
      //register event to cache site for offline use
    cache = window.applicationCache;
    cache.addEventListener('updateready', cacheUpdatereadyListener, false);
    cache.addEventListener('error', cacheErrorListener, false);
    function cacheUpdatereadyListener (){
        window.applicationCache.update();
        window.applicationCache.swapCache();
        }
        function cacheErrorListener() {
            alert('site not availble offline')
        }
    }
    

    Download Safari and use the web inspector to find errors. http://developer.apple.com/library/safari/#documentation/appleapplications/Conceptual/Safari_Developer_Guide/1Introduction/Introduction.html#//apple_ref/doc/uid/TP40007874-CH1-SW1

    Tip: Chrome's developer tools "F12" will show you the errors in the manifest load. ie the files you still need to add.

    Hope this helps, covers the entire process. I assuming if you are at this stage in development you new to add these to the mobile init:

    $.mobile.allowCrossDomainPages = true; // cross domain page loading
    $.mobile.phonegapNavigationEnabled = true; //Android enabled mobile
    $.mobile.page.prototype.options.domCache = true; //page caching prefech rendering
    $.support.touchOverflow = true; //Android enhanced scrolling
    $.mobile.touchOverflowEnabled = true; // enhanced scrolling transition availible in iOS 5
    

    Safari Developer Guide: https://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/Client-SideStorage/Client-SideStorage.html#//apple_ref/doc/uid/TP40002051-CH4-SW4

提交回复
热议问题