【问题标题】:Preserve browser history in Spotify app when links are clicked and javascript is manipulating DOM单击链接并且 javascript 正在操作 DOM 时,在 Spotify 应用程序中保留浏览器历史记录
【发布时间】:2013-01-16 20:37:26
【问题描述】:

基本上,我编写了一个 Spotify 应用程序,它只包含一个页面 (index.html),所有链接都触发了 javascript onclick() 操作 DOM 的函数。例如,我展示了最初的 4 张专辑,并有一个“查看更多专辑”链接来加载和呈现其余专辑。我这样做是为了让最初的 4 张专辑只加载一次。在我阅读细则之前,我没有意识到 pushState() 存在限制。 Spotify 说如果你尝试使用pushState(),你会得到一个“security exception”。我不想重新编写应用程序以在每次链接点击时加载新的 html 页面。我尝试了他们使用完整 URI 的方法(例如<a href='spotify:app:chirp:best_of:index'>),但它的行为不正常(code)。关于一般方法的建议?谢谢。

【问题讨论】:

    标签: javascript dom onclick spotify browser-history


    【解决方案1】:

    pushState 在 Spotify 应用程序中不受支持。如果您想在历史记录中创建一个新条目,以便用户单击后退按钮返回到之前的状态,那么您应该有如下链接:

    <a href='spotify:app:chirp:best_of:2009'>See More</a>
    

    您可以通过观察models.EVENT.ARGUMENTSCHANGED 事件来检测用户何时点击。

    您可以查看使用类似方法的Spotify App Tutorial on GitHub

    如果您不想创建新条目,而只是追加一些专辑,则无需导航到任何新 URI,然后像当前一样执行您的 seeMoreAlbumsOfTheYearOnClick 函数。

    请注意,如果您不假装导航到任何新 URL,则应将事件变量传递给您的 seeMoreAlbumsOfTheYearOnClick 函数并调用 event.preventDefault();。另一种可能性是改用button 元素。

    【讨论】:

    • 谢谢!这帮助很大。我没有意识到单击后退/前进按钮时会调用这些事件。文档中并不清楚 href 中的参数是否被传递给事件观察者
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2017-11-24
    • 2020-09-20
    • 2014-03-06
    • 2019-12-15
    • 1970-01-01
    • 2012-04-11
    • 2015-06-14
    相关资源
    最近更新 更多