praegune kellaaeg 17.06.2025 13:00:38
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
spreiii
HV kasutaja
liitunud: 27.12.2008
|
18.10.2011 13:46:52
HTML5 History API |
|
|
Kõigepealt kood siis:
javascript:
|
$(document).ready(function(){ var content = $("#content"); var loading = $("#loading"); var curPage = window.document.location; $(window).load(function(){ replacePage(location.pathname); }); function replacePage(url){ loading.fadeIn(100); $.get("/rd_framework/public/index.php", "url=" + url, function(data){ content.fadeOut(10, function() { content.html(data).fadeIn(300); }); loading.hide(); }); } $('a').live('click', function(event){ // .live - alternative to .bind(does not work after ajax requests) var data = this.getAttribute("data-url"); // leiame lingist atribuudi if(curPage != this.href){ replacePage(data); History.pushState({state:"weblink"}, document.title, data); // salvestame state'i } event.preventDefault(); return false; }); }); (function(window,undefined){ var History = window.History; History.Adapter.bind(window,'statechange',function(){ var State = History.getState(); // Check if its ours if(State.data.state != 'weblink'){ window.location = State.url; } }); })(window);
|
Probleem: Kõik välja arvatud back/forward nupud brauseril töötab laitmatult - lehe laadimine content div'i jms. Tegu on äärmiselt häiriva probleemiga ning sooviks selle võimalikult lihtsasti lahendada.
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
Timukas0
HV kasutaja

liitunud: 20.03.2007
|
18.10.2011 17:33:47
|
|
|
Kasuta oma brauseri developer toolsi, see kood (vähemalt history osa) peaks* sul erroreid andma, alustades sellest, et history on väikese tähega. See alumine function tundub ka väga vigane.
Teine asi, kui kasutad mingit kolmanda osapoole History apit, aga window.location = State.url peaks igal juhul errorit andma.
* - hetkel pole aega katsetada.
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
spreiii
HV kasutaja
liitunud: 27.12.2008
|
19.10.2011 14:25:22
|
|
|
Kasutan kolmanda osapoole History API-t tõepoolest.
http://plugins.jquery.com/project/history-js
Seda siis selleks, et toetataks ka HTML4 brausereid (fallback to hash meetod)
EDIT:
Sain asja tööle
Kui kedagi huvitab, siis kood on järgmine:
javascript:
|
var link_click = 0; // global (function(window,undefined){ var History = window.History; // Fire when ready $(document).ready(function() { var content = $("#content"); var loading = $("#loading"); var curPage = History.getState().url; replacePage(location.pathname); function replacePage(url){ link_click = 1; // prevent page from reloading loading.fadeIn(100); $.get("/rd_framework/public/index.php", "url=" + url, function(data){ content.fadeOut(10, function() { content.html(data).fadeIn(300); }); History.pushState({state: url}, document.title, url); loading.hide(); link_click = 0; // restore default state }); } $('a').live('click', function(event){ // .live - alternative to .bind(does not work after ajax requests) var data = this.href; var relativeData = data.replace(History.getRootUrl(),'/'); // replace domain if(curPage != data){ replacePage(relativeData); } event.preventDefault(); return false; }); History.Adapter.bind(window,'statechange',function(){ var State = History.getState(); url = State.url; relativeUrl = url.replace(History.getRootUrl(),'/'); // replace domain // Check if its ours if(link_click == 0){ replacePage(relativeUrl); } }); }); })(window);
|
|
|
Kommentaarid: 23 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
23 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|