标签: browser-history

更改 window.location.hash 会在历史记录中创建条目,但不会影响 chrome 后退按钮

更新:-正如Akansh Gulati他的回答中指出的,如果用户在单击后退按钮之前与页面进行任何交互,这将按预期工作,如果用户没有与页面进行任何交互并按后退按钮,则历史记录中的任何条目(通过哈希-change 或通过history.push/replace)将被忽略,这是Google Chrome更新的一部分,将阻止网站劫持您的浏览器后退按钮

这是有效且合乎逻辑的答案,所以我接受他的答案


我试图在页面加载后显示成功的弹出窗口,如果用户按 android 后退按钮(在本例中相当于浏览器后退按钮),我只想关闭弹出窗口(不想重定向回付款页面)

当弹出窗口打开时,我在 url 中添加哈希,但当用​​户按下后退按钮时,chrome 会忽略哈希并重定向回上一页,而不是仅删除哈希(在 Firefox 中工作正常)

我这里有一个工作示例,使用以下 HTML 代码来重现

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
  </head>
  <body onload="test()">
    <button type="button" onclick="window.history.back();">Back</button>
  </body>
  <script type="text/javascript">
    function writeLength() {
      document.body.appendChild(document.createTextNode(window.history.length));
    }

    function test() {
      window.location.hash = 'a';
      setTimeout(function() {
        writeLength();
        window.location.hash = 'b';
        setTimeout(function() {
          writeLength();
          window.location.hash = 'c';
          setTimeout(function() {
            writeLength();
          }, 1500);
        }, 1500);
      }, 1500);
    }
  </script>
</html>
Run Code Online (Sandbox Code Playgroud)

a) 在 chrome 中打开此页面

b) 等待哈希值更改为“#c” …

javascript google-chrome browser-history html5-history

5
推荐指数
2
解决办法
5433
查看次数

如何在 Javascript 的 popstate 事件上执行 location.reload() 时维护浏览器历史记录

因此,我有一个场景,我正在使用函数生成所有 URL history.pushState。我没有为此使用任何服务器端技术。我只从服务器获取所有数据一次,然后使用Javascript.

现在我遇到的问题是使用popstate基本上模仿浏览器后退按钮行为的功能。

只需单击一次后退按钮即可一切正常。

    $(window).on('popstate', function (event) {
        location.reload(true);
        //window.location.href = document.location;
        //console.log("location: " + document.location);
    });
Run Code Online (Sandbox Code Playgroud)

在一次后退按钮事件之后,我无法看到浏览器以前的任何历史记录。我假设这是因为location.reload方法而发生的。我也尝试存储我的所有位置,然后进行重定向,但同样的事情,浏览器历史记录在一次刷新后就会丢失。

有没有一种方法可以实现此目的,而浏览器不会丢失多次后退按钮单击的历史记录?

如果有一个JQuery选择,那么如果有人可以分享他们在这方面的知识,那就太好了。

javascript jquery redirect browser-history

5
推荐指数
1
解决办法
1523
查看次数

jquery javascript:用hashtag添加浏览器历史记录?

我的网站上有一个链接,上面写着"全屏谷歌地图".点击它后,我将谷歌地图加载到100%宽和100%高位固定div容器中.单击链接时,我还将#map添加为哈希.

是否可以使浏览器后退按钮与之一起工作?也就是说,如果我点击此链接,我会将#map添加到我当前的地址.单击后退按钮后,将删除#map哈希,并div删除或隐藏包含谷歌地图的容器.

这有可能吗?

编辑:

$('.showMapLink').live('click', function() {

    $('#mapContainer').fadeIn('fast', function () {
        loadMap("mapContainer");

        top.location.hash = "map";
        $(window).bind( 'hashchange', function( event ) {
            $('#mapContainer').fadeOut('fast', function () {
                $(this).children().remove();
            })
        });

    });

});
Run Code Online (Sandbox Code Playgroud)

javascript jquery browser-history

4
推荐指数
1
解决办法
1万
查看次数

在android中获取浏览器历史记录和搜索结果

我试图从Android浏览器获取历史记录和搜索结果.在下面的代码中,我得到了所有书签,效果很好:

public void getBrowser(){
    String[] requestedColumns = {
        Browser.BookmarkColumns.TITLE,
        Browser.BookmarkColumns.VISITS,
        Browser.BookmarkColumns.BOOKMARK
    };
    Cursor faves = managedQuery(Browser.BOOKMARKS_URI, requestedColumns,
    Browser.BookmarkColumns.BOOKMARK + "=1", null, Browser.BookmarkColumns.VISITS);
    Log.d(DEBUG_TAG, "Bookmarks count: " + faves.getCount());
    int titleIdx = faves.getColumnIndex(Browser.BookmarkColumns.TITLE);
    int visitsIdx = faves.getColumnIndex(Browser.BookmarkColumns.VISITS);
    int bmIdx = faves.getColumnIndex(Browser.BookmarkColumns.BOOKMARK);
    faves.moveToFirst();
    while (!faves.isAfterLast()) {
        Log.d("SimpleBookmarks", faves.getString(titleIdx) + " visited " + faves.getInt(visitsIdx) + " times : " + (faves.getInt(bmIdx) != 0 ? "true" : "false"));
        faves.moveToNext();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试仅从浏览器获取历史记录时,我正在尝试以下代码:

public void getBrowserHist()  {
    Cursor mCur = managedQuery(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, null, null, …
Run Code Online (Sandbox Code Playgroud)

android uri browser-history

4
推荐指数
1
解决办法
1万
查看次数

如何在HTML5历史状态中存储函数

因此,我使用HTML5历史记录管理来添加在具有AJAX加载的子内容的网站中前后导航的功能.

现在我想在状态对象中存储javascript函数,以便在弹出状态下进行回调.或多或少像以下代码:

$(window).bind("popstate", function(event) {
    var state = event.originalEvent.state;
    if (!state) {
        return;
    }
    state.callback(state.argument);
}

function beforeLoad() {
    var resourceId = "xyz";
    var func;

    if (case1) {
        func = switchPageToMode1;
    } else { // case 2
        func = swithPageToMode2;
    }

    func(resourceId); // run the function
    window.history.pushState({ callback: func, resourceId: resourceId }, "newTitle", "newURL"); // and push it to history
}

function switchPageToMode1(resourceId) {
    alterPageLayoutSomeWay();
    loadResource(resourceId);
}

function swithPageToMode2(resourceId) {
    alterPageLayoutSomeOtherWay();
    loadResource(resourceId);
}

function loadResource(resourceId) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

行.所以我要做的是存储对javascript函数的引用.但是当推送状态(实际的window.history.pushState调用)时,浏览器会提出投诉,即错误:"DATA_CLONE_ERR:DOM …

javascript html5 browser-history

4
推荐指数
1
解决办法
3362
查看次数

访问firefox插件中的历史记录

我正在使用addon构建器处理firefox插件.我想定期扫描浏览器的历史记录......整个历史记录.我正在寻找像chrome的历史api这样功能.似乎window.history仅限于会话历史记录.有帮助吗?我疯了,试图解决这个问题.像历史导出这样的插件必须做这样的事情,但是他们的代码对我来说并不是立即可以理解的.

firefox-addon browser-history firefox-addon-sdk

4
推荐指数
1
解决办法
4843
查看次数

如何在Android服务中使用managedQuery?

我有这个方法但它只适用于一个活动

public Cursor getXX() {
        Cursor mCur = thius.managedQuery(Browser.BOOKMARKS_URI,Browser.HISTORY_PROJECTION, 
                             null, null, null);
}

public void getBrowserHist()  {
    Cursor mCur = managedQuery(Browser.BOOKMARKS_URI, Browser.HISTORY_PROJECTION, 
                             null, null, null);
    mCur.moveToFirst();
    if (mCur.moveToFirst() && mCur.getCount() > 0) {
        while (mCur.isAfterLast() == false) {
            Log.v("titleIdx", mCur.getString(Browser.HISTORY_PROJECTION_TITLE_INDEX));
            Log.v("urlIdx", mCur.getString(Browser.HISTORY_PROJECTION_URL_INDEX));
            mCur.moveToNext();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在android服务中使用"ManagedQuery"字样?

如何创建一个方法将光标返回到浏览器历史记录android系统?

android cursor browser-history

4
推荐指数
1
解决办法
3926
查看次数

如何通过 js 启用/禁用浏览器历史记录

我们可以通过java脚本代码启用或禁用浏览器历史记录吗??如果可能,请告诉我执行此操作的机制。

javascript web-applications browser-history

4
推荐指数
1
解决办法
9842
查看次数

为wp8 cordova应用程序实现后退按钮功能

我尝试在我的wp8 cordova应用程序中实现后退按钮功能,按下设备上的硬件后退按钮应导航到应用程序的上一页.

我做了什么

function onLoad() {
    document.addEventListener("deviceready", init, false);
    document.addEventListener("resume", onResume, false);
    document.addEventListener("backbutton", onBackKeyDown, false);
}

function init() {
  //some code
}

function onResume() {
  //some code   
}

function onBackKeyDown() {
   window.history.back();
   return false; 
}
Run Code Online (Sandbox Code Playgroud)

我也试过替换"window.history.back();" "navigator.app.backHistory();" 这似乎也不起作用

然后我尝试将代码放在try catch块中

try
{
navigator.app.backHistory();
//window.history.back(); 
}
catch (e)
{
console.log("exception: " + e.message); 
}
Run Code Online (Sandbox Code Playgroud)

这似乎也失败.无论我做什么,应用程序似乎退出应用程序而不是向后移动有趣的是当我在IE控制台中尝试这个似乎完美的工作

请帮助这些家伙

提前致谢

browser-history cordova windows-phone-8

4
推荐指数
1
解决办法
966
查看次数

Chrome 在导航到新页面并使用 Ruby on Rails 作为后端点击返回按钮后显示缓存的 JSON

问题

从相同的基本 URL 检索 HTML 和 JSON 时,离开使用 pushState 和 popState 处理后退和前进导航的页面后,使用后退按钮返回页面将显示缓存的 JSON 而不是 HTML。

说明

  1. 使用 Ajax 调用在我们的应用程序中使用与页面 URL 相同的 URL 来翻阅搜索结果,但使用 format=json。
  2. 在每一页上window.history.pushState(state,null,url)都调用了 a 。
  3. 当在此页面中使用后退和前进按钮时,会在内部使用 popState。
  4. 结果具有加载其他页面的链接。(此应用程序不是 SPA)
  5. 单击这些链接之一,然后单击“返回”按钮后,Chrome 会显示存储在状态中的 JSON,而不是显示控制台错误的上一页:

资源被解释为 Document 但使用 MIME 类型 application/json 传输

Firefox 和 Safari 正确重新加载页面,并且由于我正在更新 pushState 调用中的 URL,它们正确地将页面重新加载到我希望的状态(即 url 具有正确的页面标识,因此重新加载了搜索结果的正确页面) .

javascript google-chrome ruby-on-rails browser-history

4
推荐指数
1
解决办法
548
查看次数