我正在使用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,则找不到它,我只会进行更改页面调用。
由于 /安迪
答案 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 );
}