在我的jQueryMobile历史记录中找到我的index.html(第一个)页面

时间:2013-07-31 22:47:44

标签: jquery-mobile back browser-history

我正在使用jQMobile的单页AJAX加载。每个页面都是自己的文件。

我需要时在页面上动态创建HOME按钮。今天我只使用< A>标记指向“index.html”。有没有什么办法可以检查我的网络应用程序jQueryMobile历史记录,以便在历史中第一次找到我的index.html页面加载并调用window.history.back( - ##);到页面而不是仅添加到历史和导航。

如果历史记录中没有index.html,我会将window.location.href添加到页面中。

function
GoHome()
{

  /* This is a function I don't know even exists, but it would find the first occurrence of index.html */
  var togo = $mobile.urlHistory.find( 'index.html' )  
  var toback = $mobile.urlHistory.length -1 - togo;

  if ( togo >= 0 )
    window.history.back( -1 * toback )
  else
    $.mobile.changePage( '/index.html' )

}

如果历史记录是index.html => profile.html => photos.html $ .mobile.urlHistory.find('index.html')的神奇功能将返回0,历史长度将为3,所以我的计算将是window.history.back(-2)返回索引.html页面。如果找到的函数返回-1,则找不到它,我只会进行更改页面调用。

由于 /安迪

1 个答案:

答案 0 :(得分:0)

阅读和阅读后,我不再确定我在读什么了,我写了这个函数。不确定它是正确的还是最好的解决方案,即使它可以缩小。

用这个来打电话

console.log( 'FindHome: ' + FindHome( ["", 'index.html'] ) );

它将从jQueryMobile urlHistory.stack中的第一个条目搜索到当前索引,并查看它是否会找到索引页面。从那里我可以决定如果我想加载新页面或者将-xx返回到历史记录中的那个,该怎么办。这样,历史就会有些干净。

function
FindHome( _home )
{
var stk = $.mobile.urlHistory.stack;
var ai  = $.mobile.urlHistory.activeIndex;

for ( var idx=0; idx <= ai; idx++ )
{
    var obj = $.mobile.path.parseUrl( $.mobile.urlHistory.stack[idx].url );
    if(typeof _home == "string")
    {
        if ( _home == obj.filename )
            return( idx - ai );
    }
    else
    {
        for(var x in _home)
        {
            if ( _home[x] == obj.filename )
                return( idx - ai );
        }               
    }
}

return ( 0 );   
}